AnnotationException: использование @OneToMany или @ManyToMany для таргетинга на несопоставленный класс с несколькими источниками данных.
Есть два класса:
basepackage.a.Entity1
а также
basepackage.a.b.Entity2
Entity1 имеет отношение @ManyToMany к Entity2
entity1:
@Entity
Table(name = "Entity1")
public class Entity1 {
// fields here
@ManyToMany
@JoinTable(
name = "Entity1_TO_Entity2",
joinColumns = @JoinColumn(name = "Entity1_ID"),
inverseJoinColumns = @JoinColumn(name = "Entity2_ID")
)
private Set<Entity2> entities2;
entity2:
@Entity
Table(name = "Entity2")
public class Entity2 {
// fields here
@ManyToMany(mappedBy = "entities2")
private Set<Entity2> entities1;
Ошибка при запуске контекста приложения.
AnnotationException: использование @OneToMany или @ManyToMany для целевого класса
2 ответа
Причина ошибки была в конфигурации кровати нескольких источников данных. Следующая конфигурация также ищет подпакеты
basePackages = {
"basepackage.a"
}
Ваши аннотации выглядят хорошо. Вот что нужно проверить:
убедитесь, что аннотацией является javax.persistence.Entity, а не org.hibernate.annotations.Entity. Первый делает сущность обнаруживаемой. Последнее является просто дополнением.
если вы вручную перечисляете свои сущности (в файле persistence.xml, в hibernate.cfg.xml или при настройке фабрики сеансов), убедитесь, что вы также перечислили Entity1 и Entity2.
убедитесь, что у вас нет нескольких классов Entity1 и Entity2 в разных пакетах, и вы импортировали не тот класс.