hibernate问题 – “使用@OneToMany或@ManyToMany定位未映射的类”

我正在用Hibernate Annotationsfind自己的脚,我碰到了一个问题,我希望有人能帮上忙。

我有2个实体,Section和ScopeTopic。 Section有一个List类成员,所以是一对多的关系。 当我运行我的unit testing时,我得到这个exception:

使用@OneToMany或@ManyToMany定位未映射的类:com.xxx.domain.Section.scopeTopic [com.xxx.domain.ScopeTopic]

我会假设错误意味着我的ScopeTopic实体没有映射到表? 我看不到我做错了。 这里是实体类:


@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; } } 

我很确定这是我自己缺乏理解,这是错误的,所以一些指导将是伟大的,谢谢!

你的注释看起来很好。 这里是要检查的事情:

  • 确保注释是javax.persistence.Entity ,而不是org.hibernate.annotations.Entity 。 前者使实体可检测。 后者只是一个补充。

  • 如果您要手动列出实体(在persistence.xml中,在hibernate.cfg.xml中,或在configuration会话工厂时),请确保您也列出了ScopeTopic实体

  • 确保在不同的包中没有多个ScopeTopic类,并且导入了错误的类。

您的实体可能没有在hibernateconfiguration文件中列出。

我的许多方面都没有实体

 @Entity // this was commented @Table(name = "some_table") public class ChildEntity { @JoinColumn(name = "parent", referencedColumnName = "id") @ManyToOne private ParentEntity parentEntity; } 

大多数在Hibernate ,需要在hibernate.cfg.xml添加Entity类,

 </hibernate-configuration> </session-factory> .... <mapping class="xxx.xxx.yourEntityName"/> </session-factory> </hibernate-configuration>