Odnajduję się dzięki Hibernate Adnotations i mam problem, z którym mam nadzieję, że ktoś może mi pomóc.
Mam 2 podmioty, sekcję i zakres. Ta sekcja ma członka klasy Lista, więc jest to relacja jeden do wielu. Kiedy uruchamiam test jednostkowy, otrzymuję ten wyjątek:
Użycie @OneToMany lub @ManyToMany w celu kierowania na niezamapowaną klasę: com.xxx.domain.Section.scopeTopic [com.xxx.domain.ScopeTopic]
Zakładam, że błąd oznacza, że moja jednostka ScopeTopic nie jest zamapowana na tabelę? Nie widzę, że postąpiłem źle. Oto klasy Entity:
@Entity
public class Section {
private Long id;
private List<ScopeTopic> scopeTopics;
public Section() {}
@Id
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@OneToMany
@JoinTable(name = "section_scope", joinColumns = {@JoinColumn(name="section_id")},
inverseJoinColumns = {@JoinColumn(name="scope_topic_id")} )
public List<ScopeTopic> getScopeTopic() {
return scopeTopic;
}
public void setScopeTopic(List<ScopeTopic> scopeTopic) {
this.scopeTopic = scopeTopic;
}
}
@Entity
@Table(name = "scope_topic")
public class ScopeTopic {
private Long id;
private String topic;
public ScopeTopic() {}
@Id
public Long getId() {
return id;
}
public void setId() {
this.id = id;
}
public String getTopic() {
return topic;
}
public void setTopic(String topic) {
this.topic = topic;
}
}
Jestem prawie pewien, że winą jest mój własny brak zrozumienia, więc niektóre wskazówki byłyby świetne, dzięki!
packagesToScan
Mój nie miał
@Entity
bytu z wielu stronźródło
Twoja jednostka może nie być wymieniona w pliku konfiguracyjnym hibernacji.
źródło
Przeważnie
Hibernate
trzeba dodaćEntity
klasę whibernate.cfg.xml
podobny sposóbźródło
Jeśli używasz konfiguracji Java w projekcie spring-data-jpa, upewnij się, że skanujesz pakiet, w którym znajduje się jednostka. Na przykład, jeśli jednostka mieszkała com.foo.myservice.things poniższa adnotacja konfiguracji nie będzie Podnieś to.
Możesz to naprawić, poluzowując go do samego com.foo.myservice (oczywiście pamiętaj o innych skutkach poszerzenia zakresu o skanowanie obiektów).
źródło
Miałem ten sam problem i mogłem go rozwiązać, dodając jednostkę do persistence.xml. Problem został spowodowany tym, że jednostka nie została dodana do konfiguracji trwałości. Edytuj swój plik trwałości:
...
źródło
W moim przypadku musi dodać moje zajęcia podczas budowy
SessionFactory
, zaddAnnotationClass
źródło