Java 使用Hibernate将列指定给使用父实体的子实体

Java 使用Hibernate将列指定给使用父实体的子实体,java,hibernate,Java,Hibernate,是否可以在超级类实体中有一个列定义供子类实体使用 我采用了每个子类层次结构的表来表示从“超级业务”继承的不同类型的“业务”。因此,每个业务类型在数据库中都有自己的表,还有一个通用的“业务”表,其中包含所有业务类型共有的信息 每个业务都有一个外键列,名为“parent_id”,它指向相同类型的另一个业务(因此业务可以属于相同类型的其他业务)。这意味着我的每个业务类型类都有自己的“parent”属性和相应的getter和setter 我想使用泛型在“超级业务”中声明一个“父”属性(以及getter和

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

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

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

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

通过在我的“超级商业”类和“商业类型”类之间添加一个新的@MappedSuperClass(CommonBusiness),我实现了一些类似的功能,如下所示:

SuperBusiness > CommonBusiness > (BusinessType1, BusinessType2, BusinessType3)
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> {
...
}
但我想知道,如果没有“CommonBusiness”类,是否有可能做到这一点

我最初的问题可以重新表述为:是否可以在超类实体中定义列,以便子实体将某些列视为来自MappedSuperClass?”


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

我会这样做:

SuperBusiness > CommonBusiness > (BusinessType1, BusinessType2, BusinessType3)
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> {
...
}
公共级超级商务{
受保护的T型双亲;
...
}
公共类CommonBusiness扩展了SuperBusiness{
...
}
公共类BusinessType1扩展了CommonBusiness{
...
}
公共类BusinessType2扩展了CommonBusiness{
...
}
公共类BusinessType3扩展了CommonBusiness{
...
}

很遗憾你不能发布代码!