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

Hibernate映射的超类关系和覆盖

桑成荫
2023-03-14
问题内容

我有一个抽象的MappedSuperClass,参与者,并通过三种“参与者”进行了扩展。然后,每个人都使用自己的“项目”,也使用抽象的MappedSuperClass。但是,我希望基类了解Projects,以便编写通用代码与参与者进行交互。如何使用Hibernate批注指定此内容?以及如何在ExtendedParticipant和ExtendedProject类中覆盖它?

每个参与者类型和每个项目类型都有自己的数据库表,这些表具有我无法更改的现有数据和ID(在表中不是唯一的)。

以下代码为我提供了IDE错误“许多属性不应该是’Mapped Superclass’”。

@MappedSuperclass
public abstract class Participant implements Persistable {

    ...

    @ManyToOne
    @JoinColumn(name = "project_id")
    public Project getProject() {
        return project;
    }

    public void setProject(Project project) {
        this.project = project;
    }

    ...
}

和Project类在相同的问题上几乎是相同的:

@MappedSuperclass
public abstract class Project implements Persistable {

    ...

    @OneToMany
    public List<Participant> getParticipants() {
        return participants;
    }

    public void setProject(List<Participant> participants) {
        this.participants = participants;
    }

    ...
}

问题答案:

映射的超类不是实体,不能成为关联的一部分。因此,将您的类映射为实体,并在其“上方”引入映射的超类或使用TABLE_PER_CLASS策略。



 类似资料:
  • toString()]hibernate:/*插入com.pissolato.api.entitys.sale*/插入到sale(company,created,description,discount,sub_value,type,updated,user,value)值(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)

  • 问题内容: 我的数据模型代表法人实体,例如企业或个人。两者都是纳税实体,都具有TaxID,电话号码和邮件地址的集合。 我有一个Java模型,其中有两个扩展抽象类的具体类。抽象类具有两个具体类共有的属性和集合。 我正在 MySQL* 数据库上使用 Hibernate JPA注释,其类如下: * 问题是,和对象需要参考他们的主人,这是一个。hibernate抱怨: 看来这将是一个相当普遍的Java继承

  • 如果在中只有一组,这将非常好地工作。ASSESSMENT_COMMENT只有两列: 它将完美地代表一对多的关系。 现在问题来了: 那么,1)这是Hibernate中已知的bug吗?2)有办法解决这个问题吗?我可以强制Hibernate创建两个映射表,每个映射表一个吗?请记住,我不能更改类来引用(业务逻辑需求)

  • 主要内容:关联映射,反转,级联在前面的学习中,我们所涉及的都是基于单表的操作,但在实际的开发过程中,基本上都是同时对多张表的操作,且这些表都存在一定的关联关系。 Hibernate 是一款基于 ORM 设计思想的框架,它将关系型数据库中的表与我们 Java 实体类进行映射,表中的记录对应实体类的对象,而表中的字段对应着实体类中的属性。Hibernate 进行增删改查等操作时,不再直接操作数据库表,而是对与之对应的实体类对象进行

  • 问题内容: 嗨,我正在尝试在hibernate状态下映射一些类,但在如何完成此类映射方面存在一般性问题。有User类和Facebook用户类,它们具有以下结构User Class: Facebook类FbUser可以具有属于同一类FbUser的对象的Friends列表。 到现在为止,我在User和FbUser之间建立了许多一对一的关系。 现在,FbUser映射: 如何在FbUser Map文件中映

  • 我试图用流和映射将我的类的值与另一个类的值相加。 我的旧代码是这样的...