Ich finde meine Füße mit Hibernate Annotations und bin auf ein Problem gestoßen, bei dem hoffentlich jemand helfen kann.
Ich habe 2 Entitäten, Section und ScopeTopic. Der Abschnitt hat ein List-Klassenmitglied, also eine Eins-zu-Viele-Beziehung. Wenn ich meinen Komponententest durchführe, wird folgende Ausnahme angezeigt:
Verwendung von @OneToMany oder @ManyToMany für eine nicht zugeordnete Klasse: com.xxx.domain.Section.scopeTopic [com.xxx.domain.ScopeTopic]
Ich würde annehmen, dass der Fehler impliziert, dass meine ScopeTopic-Entität keiner Tabelle zugeordnet ist. Ich kann nicht sehen, dass ich etwas falsch gemacht habe. Hier sind die Entitätsklassen:
@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;
}
}
Ich bin mir ziemlich sicher, dass mein eigener Mangel an Verständnis schuld ist, daher wäre eine Anleitung großartig, danke!
packagesToScan
Meins hatte nicht
@Entity
auf der vielen Seite Entitätquelle
Ihre Entität ist möglicherweise nicht in der Konfigurationsdatei für den Ruhezustand aufgeführt.
quelle
Meistens
Hibernate
muss dieEntity
Klasse inhibernate.cfg.xml
like- hinzugefügt werden.quelle
Wenn Sie die Java-Konfiguration in einem spring-data-jpa-Projekt verwenden, stellen Sie sicher, dass Sie das Paket scannen, in dem sich die Entität befindet. Wenn die Entität beispielsweise com.foo.myservice.things lebte, würde die folgende Konfigurationsanmerkung dies nicht tun Heb es auf.
Sie können das Problem beheben, indem Sie es auf com.foo.myservice lockern (natürlich sollten Sie auch andere Auswirkungen einer Erweiterung Ihres Bereichs berücksichtigen, um nach Entitäten zu suchen ).
quelle
In meinem Fall muss a meine Klassen beim Erstellen der
SessionFactory
mit hinzufügenaddAnnotationClass
quelle
Ich hatte das gleiche Problem und konnte es lösen, indem ich die Entität in persistence.xml hinzufügte. Das Problem wurde dadurch verursacht, dass die Entität nicht zur Persistenzkonfiguration hinzugefügt wurde. Bearbeiten Sie Ihre Persistenzdatei:
...
quelle