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"
    }

Ваши аннотации выглядят хорошо. Вот что нужно проверить:

  1. убедитесь, что аннотацией является javax.persistence.Entity, а не org.hibernate.annotations.Entity. Первый делает сущность обнаруживаемой. Последнее является просто дополнением.

  2. если вы вручную перечисляете свои сущности (в файле persistence.xml, в hibernate.cfg.xml или при настройке фабрики сеансов), убедитесь, что вы также перечислили Entity1 и Entity2.

  3. убедитесь, что у вас нет нескольких классов Entity1 и Entity2 в разных пакетах, и вы импортировали не тот класс.

Другие вопросы по тегам