Je trouve mes marques avec les annotations Hibernate et j'ai rencontré un problème auquel j'espère que quelqu'un pourra m'aider.
J'ai 2 entités, Section et ScopeTopic. La section a un membre de classe List, donc une relation un à plusieurs. Lorsque j'exécute mon test unitaire, j'obtiens cette exception:
Utilisation de @OneToMany ou @ManyToMany ciblant une classe non mappée: com.xxx.domain.Section.scopeTopic [com.xxx.domain.ScopeTopic]
Je suppose que l'erreur implique que mon entité ScopeTopic n'est pas mappée à une table? Je ne vois pas que j'ai mal fait. Voici les classes d'entité:
@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;
}
}
Je suis à peu près sûr que c'est mon propre manque de compréhension qui est en faute, alors quelques conseils seraient formidables, merci!
packagesToScan
Le mien n'avait pas d'
@Entity
entité côté multiplela source
Votre entité peut ne pas être répertoriée dans le fichier de configuration de mise en veille prolongée.
la source
Surtout dans
Hibernate
, besoin d'ajouter laEntity
classehibernate.cfg.xml
comme-la source
Si vous utilisez la configuration Java dans un projet spring-data-jpa, assurez-vous que vous analysez le package dans lequel se trouve l'entité. Par exemple, si l'entité vivait com.foo.myservice.things, l'annotation de configuration suivante ci-dessous ne serait pas ramasser.
Vous pouvez le résoudre en le relâchant jusqu'à com.foo.myservice (bien sûr, gardez à l'esprit tous les autres effets de l'élargissement de votre portée pour rechercher des entités).
la source
J'ai eu le même problème et j'ai pu le résoudre en ajoutant l'entité dans persistence.xml. Le problème est dû au fait que l'entité n'a pas été ajoutée à la configuration de persistance. Modifiez votre fichier de persistance:
...
la source
Dans mon cas , un a ajouter mes classes, lors de la construction de la
SessionFactory
, avecaddAnnotationClass
la source