我正在使用“hibernate注释”找到我的脚,并且遇到了一个问题,希望有人可以提供帮助。
我有2个实体,分别是Section和ScopeTopic。该部分具有List类成员,因此具有一对多关系。运行单元测试时,出现此异常:
使用@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。前者使实体可检测。后者只是一个补充。
javax.persistence.Entity
org.hibernate.annotations.Entity
如果要手动列出实体(在persistence.xml,hibernate.cfg.xml或配置会话工厂时),请确保还列出了该ScopeTopic实体
ScopeTopic
确保您ScopeTopic在不同的程序包中没有多个类,并且导入了错误的类。