我正在使用“休眠注释”找到自己的脚,并且遇到了一个问题,希望有人可以提供帮助。

我有2个实体,分别是Section和ScopeTopic。该部分具有List类成员,因此具有一对多关系。运行单元测试时,出现此异常:



我会假设该错误暗示我的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中或在配置 session 工厂时),那么请确保您还列出了ScopeTopic实体
  • 确保在不同的程序包中没有多个ScopeTopic类,并且您导入了错误的类。
  • 10-04 13:55