Привет, я использую lombok api с классом сущности, имеющим аннотацию @Data, которая расширяет класс аудита (общие столбцы), который является простым абстрактным классом с аннотацией @MappedSuperclass. Но когда загружается hibernate-jpa, он не выбирает имена столбцов, а вместо этого выбирает фактические имена переменных-членов.
@Entity
@Data
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "TEST_TYPES", schema = "TESTER")
@EqualsAndHashCode(callSuper = false, of = {"id"})
public class TestEntity extends AuditEntity {
@Id
@Column(name = "TYPE_ID")
private Short id;
@Column(name = "NAME")
private String name;
}
@MappedSuperclass
public abstract class AuditEntity implements Serializable {
private static final long serialVersionUID = 3487394229267512541L;
private String createdBy;
private Date createdDate;
@Column(name = "CREATE_ID", length = 40)
public String getCreatedBy() {
return this.createdBy;
}
public void setCreatedBy(String createdBy) {
this.createdBy = createdBy;
}
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "CREATED_DATE", length = 7)
public Date getCreatedDate() {
return this.createdDate;
}
public void setCreatedDate(Date createdDate) {
this.createdDate = createdDate;
}
}
Проблема: Гибернация выдает эту ошибку .. Вызвано: java.sql.SQLSyntaxErrorException: ORA-00904: «TESTPROJJU0 _». «CREATEDBY»: недопустимый идентификатор
Ожидал: hibernate должен выбрать имя столбца, то есть "CREATED_BY", но он выбирает "createdby"
Я ценю любое предложение / помощь.




Это может иметь какое-то отношение к стратегии именования JPA. Установка свойства
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
должны принимать фактические имена столбцов, которые вы указали.
хорошо, лучше добавьте это к своему вопросу, другие могут также предложить материал hibernate5
Вы не указываете имя с помощью аннотации @Column.
Привет, Нивер, я использую аннотацию @Column для геттеров, и это нормально.
@Column(name = "CREATE_ID" не должен ли это быть @Column(name = "CREATED_BY"?
Спасибо за ваш ответ. Но ваше предложение поддерживает спящий режим 5.0 и выше. Но я использую hibernate4.x