java.sql.SQLSyntaxErrorException: Unknown column 'userdao0_.creation_date' in 'field list'

193
17 марта 2022, 10:20

userDAO:

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "id")
private Integer id;
@Column(name = "login", unique = true, nullable = false)
private String login;
@Column(name = "password", nullable = false)
private String password;
@Column(name = "firstName")
private String firstName;
@Column(name = "lastName")
private String lastName;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
@Column(name = "creationDate")
private LocalDateTime creationDate; //далее гетеры и сетеры

Контроллер с сохранением пользователя:

    @PostMapping()
public UserDAO create(@RequestBody UserDAO user) {
    if (userRepository.findByLogin(user.getusername()) != null) {
        user.setCreationDate(LocalDateTime.now());
        return userRepository.save(user);
    } else {
        return null;
    }
}

И changelog.yaml от liquidbase

databaseChangeLog:
 - logicalFilePath: db.changelog/db.changelog-lesson1.yaml
 - changeSet:
  id: 1
  author: your_liquibase_username
  changes:
    - createTable:
        tableName: users
        columns:
          - column:
              name: id
              type: BIGINT
              autoIncrement: true
              constraints:
                primaryKey: true
                nullable: false
          - column:
              name: login
              type: varchar(50)
              constraints:
                unique: true
                nullable: false
          - column:
              name: password
              type: varchar(512)
              constraints:
                nullable: false
          - column:
              name: firstName
              type: varchar(50)
          - column:
              name: lastName
              type: varchar(50)
          - column:
              name: creationDate
              type: date

Возникает ошибка при попытке добавить пользователю в базу данных. Приблизительно понимаю что что-то с именнованием не так, т.к. если добавлять через чистый sql всё работает отлично. Подскажите, пожалуйста, в чём проблема.

Answer 1

Проблема в имени поля. У вас в БД поле называется creationDate а через ОRM передается creation_date. Переименуйте поле в БД на creation_date

READ ALSO
Последовательность анимации javafx

Последовательность анимации javafx

Вопрос вот в чем: Есть класс Controller и FXMLУ кнопки "бросить кубик" есть event onMouseClicked выполняющий метод thrw() в Controller

91
Веб сервер Java

Веб сервер Java

Имеется Java сервер на HerokuПолучает запрос и должен вернуть некую строку, по сути Json

160