当前位置: 首页 > 面试题库 >

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

子车俊材
2023-03-14
问题内容

我正在使用“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。前者使实体可检测。后者只是一个补充。

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

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



 类似资料:
  • 我将spring boot with JPA用于一个简单的CRUD应用程序。 我有一个带有一个,它有一个通过一对多关系引用两个基本的ID的复合主键。 但是,我得到一个错误,它说 org.hibernate.AnnotationException:针对未映射的类使用@OneTomany或@ManyTomany:Objecta.PrimaryKeys[PrimaryKey]。 这似乎是一个相当普遍的问

  • 我一直试图通过一个名为Guardian的中间类映射两个用户之间的一些“OneToOne”关系。当我试图检索一个用户(和他的监护人)时,从Glassfish(Open edition V4.0)返回一个内部服务器错误。但是,日志中没有显示任何类型的堆栈跟踪或任何错误。我怀疑问题是我在JPA类中的映射。 启动服务器时,我得到两个与Guardian类有关的警告,但我并不真正理解: 警告:映射到元素[me

  • 我们必须在可选元素“mappedby”中指定什么。是特定模型的table_name还是classname? 哪个是正确的? 这个

  • 我对冬眠学习还不熟悉,所以研究冬眠学习中使用的关系。我所了解的是-对于带有外键的一域单向关系映射,连接列将位于目标实体中(在我的示例中为Review类)。我不需要让它双向运行。 但是在实现它的同时,我得到了以下错误: OneToMany-单向-示例3 请帮帮忙!!!

  • 问题内容: 我有一个问题,它给我错误: 无法创建sessionFactory object.org.hibernate.AnnotationException:非法尝试将非集合映射为@ OneToMany,@ ManyToMany或@CollectionOfElements:nl.scalda.pasimo.model.employeemanagement.EducationTeam.coachG

  • 我正在尝试在OneToOne映射中加入Hibernate实体。我能够从Main Entity获取给定主键的数据,但是加入实体返回null。我是Hibernate新手,任何帮助都将不胜感激。 我有两张桌子, PT\U核心 主键:ptId—整数 ST_AUX 主键:stId; 列:stId, stName 这两个表由其他应用程序填充,而我的是只读操作。 下面是我的第一个实体类(PtCore.java)