当前位置: 首页 > 知识库问答 >
问题:

使用Hibernate使用父实体将列分配给子实体

顾炎彬
2023-03-14

是否可以在超类实体中有一个列定义供子类实体使用?

我采用了每子类表层次结构来表示从“超级业务”继承的不同类型的“业务”。因此,每个业务类型在数据库中都有自己的表,并且还有一个通用的“业务”表,其中包含所有业务类型共有的信息。

每个企业都有一个外键列,名为“parent\u id”,它指向相同类型的另一个企业(因此企业可以属于相同类型的其他企业)。这意味着我的每个业务类型类都有自己的“parent”属性,以及相应的getter和setter。

我想使用泛型在“超级业务”中声明一个“父”属性(以及getter和setter),以便可以为所有业务编写一次,而不是为每种类型的业务编写一次。

通过将这些东西放入我的“super business”类和“business type”类之间的一个新的@MappedSuperClass(CommonBusiness)中,我实现了一些类似的功能,如下所示:

SuperBusiness > CommonBusiness > (BusinessType1, BusinessType2, BusinessType3)

但是我想知道是否有可能在没有“公共业务”类的情况下做到这一点。

我最初的问题可以改写为:是否有可能在超类实体中定义列,以便子实体将某些列视为来自映射超类?”

(我到处找了,什么也没找到!而且我也不能发布代码,因为它不属于我,对不起!)

共有1个答案

和谦
2023-03-14

我会做这样的事情:

public class SuperBusiness<T extends SuperBusiness> {
    protected T parent;
...
}

public class CommonBusiness<T extends SuperBusiness> extends SuperBusiness<T> {
...
}

public class BusinessType1 extends CommonBusiness<BusinessType1> {
...
}

public class BusinessType2 extends CommonBusiness<BusinessType2> {
...
}

public class BusinessType3 extends CommonBusiness<BusinessType3> {
...
}
 类似资料:
  • 如何返回与JPA中的父级有关系的实体列表? 我有一个用户实体,在名为的属性上有@OneToMany映射。子实体为Pet类型。这只是一种单向关系。 如何在JPA中编写返回给定用户的所有宠物的连接?

  • 尝试获取父实体(Msg)的实体,其中父PK (msg_id)是子实体中的FK时,尝试保持子实体(MsgRetry)时出错。 错误,如:org.hibernate.id.IdentifierGenerationException:试图从null一对一属性分配id 父实体,不需要知道子实体(至少我认为它不需要知道)。一旦子实体被持久化,我就会尝试也持久化父实体。我可以通过在子实体中没有父实体并调用关联

  • 我可能需要一些帮助,因为我被这些文件弄糊涂了: 我有一个JPA母公司: 和孩子: 如果我只是增加联系人,我希望JPA能够建立这种关系。 e、 g: 现在发生的是: 触点插入DB(良好) 使用providerX。联系人中的id。提供者列(良好) provider\u contact表中未显示任何关系条目 我知道我可以将联系人设置为提供者的属性<代码>providerX。联系人。添加(c)。。。回购。

  • 我通常使用JPQL查询数据库,但今天我不得不使用原生查询,因为性能原因和JPQL中没有的特性(联接子查询)。使用JPQL,可以使用join fetch来检索父实体及其子实体集合。然而,当我尝试使用本机查询时,对于每个父实体,将返回多行,每行包含父实体及其子实体之一的数据。然后返回的列表包含父级的重复对象。假设一个父级有两个子级,那么下面的查询将在列表中返回2个父级,而不是1个。 任何人都知道如何避

  • 我对这些技术是新的,所以提前道歉。 我在我的应用程序中使用了springboot、Spring JPA、hibernate和mapstruct。

  • 我使用的是Spring数据jpa。将子实体添加到父实体后,我将父实体保存到数据库。我想得到孩子的身份证,但我发现我得到的是空的。 我在getId()方法中添加了@GeneratedValue(Strategy=GenerationType.IDENTITY),但它不起作用。 以下是模型: 父实体已经在数据库中,所以我直接找到它,父存储库entends Jpa列举 这里是我的测试代码: 我得到的输出