一尘不染

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

hibernate

我正在使用“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;
    }
}

我很确定这是我自己的理解不足造成的,所以一些指导会很棒,谢谢!


阅读 300

收藏
2020-06-20

共1个答案

一尘不染

您的注释看起来不错。这里是要检查的东西:

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

  • 如果要手动列出实体(在persistence.xml,hibernate.cfg.xml或配置会话工厂时),请确保还列出了该ScopeTopic实体

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

2020-06-20