У меня есть много классов, где над геттером размещены аннотации, подобные этому:
private Location location;
@ManyToOne(fetch = FetchType.LAZY)
@NotNull
@JoinColumn(name = "LocationId", nullable = false)
public Location getLocation() {
return location;
}
Этот код работал с архитектурой hibernate \ dto, но я пытаюсь реализовать Spring Data и не вносил никаких измененийв коде я просто добавил данные Spring в зависимости и начинаю получать ошибку:
Caused by: org.hibernate.MappingException: Unable to find column with logical name locationid in table LocationProperty
at org.hibernate.cfg.Configuration$MappingsImpl.getPhysicalColumnName(Configuration.java:2949)
at org.hibernate.cfg.IndexOrUniqueKeySecondPass.addConstraintToColumn(IndexOrUniqueKeySecondPass.java:86)
at org.hibernate.cfg.IndexOrUniqueKeySecondPass.doSecondPass(IndexOrUniqueKeySecondPass.java:76)
at org.hibernate.cfg.Configuration.originalSecondPassCompile(Configuration.java:1597)
at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1355)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1741)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1792)
Это можно исправить, переместив аннотации из объявления получателя в поле, поэтому этот код работает:
@ManyToOne(fetch = FetchType.LAZY)
@NotNull
@JoinColumn(name = "LocationId", nullable = false)
private Location location;
public Location getLocation() {
return location;
}
Spring-data - 1.3.0. РЕЛИЗ, я знаю, что он очень старый, НО в этом проекте мы используем старый hibernate, поэтому я не могу добавить более новый, потому что я получил огромное количество других ошибок с фабрикой сессий и т. Д.Так что это не вариант.
Hibernate - 4.1.12.final
Я могу исправить это, переместив аннотации, но есть сотни классов, так что это действительно фиктивная работа.