JPA findBy пытается получить данные на основе имени столбца сущности вместо имени столбца liquibase

#spring-boot #hibernate #liquibase

#весенняя загрузка #спящий режим #liquibase

Вопрос:

     select
        emaillimit0_.id as id1_1_,
        emaillimit0_.maxEmailLmt as maxEmail2_1_,
        emaillimit0_.rmngEmailLmt as rmngEmai3_1_,
        emaillimit0_.usrNm as usrNm4_1_ 
    from
        email_limit emaillimit0_ 
    where
        emaillimit0_.usrNm=?

2020-08-28 12:49:09.958 ERROR 9100 --- [nio-8090-exec-6] o.h.e.j.s.SqlExceptionHelper             : ERROR: column emaillimit0_.maxemaillmt does not exist
  Hint: Perhaps you meant to reference the column "emaillimit0_.maxEmailLmt".
  Position: 35
  

Я настроил liquibase для простой миграции БД в моем проекте Spring boot. И таблицы создаются в БД на основе журнала изменений liquibase, который является правильным. Но при вызове или сохранении JPA вместо имен столбцов liquibase используется имя столбца сущности.

Не могли бы вы, пожалуйста, сообщить мне, что я делаю не так?

Комментарии:

1. Вам нужно сопоставить свой столбец, используя @Column в поле.

2. Пожалуйста, предоставьте свой Entity class

3. @Rono, обязательно ли сохранять имена столбцов в Entity и liquibase одинаковыми? Bcoz, это работает только тогда, когда все имя «@Column» и имя столбца таблицы liquibase в нижнем регистре.

4.@SSK, ниже мой EntityClass @Entity @Table(name = "email_limit") public class EmailLimit { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name="id") private long id; @Column(name="usrnm") private String usrNm; @Column(name="maxemaillmt") private Integer maxEmailLmt; @Column(name="rmngemaillmt") private Integer rmngEmailLmt;

5. И моя таблица liquibase, <createTable tableName="email_limit"> <column name="id" type="bigserial" autoIncrement="true"> <constraints primaryKey="true" nullable="false" /> </column> <column name="usrnm" type="varchar(128)"> <constraints nullable="false" unique="true" /> </column> <column name="maxemaillmt" type="bigserial"> <constraints nullable="false" /> </column> <column name="rmngemaillmt" type="bigserial"> <constraints nullable="false" /> </column> </createTable>