#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>