我有下一个问题:

package com.hibernate.example.question;
public class Attribute{
   private String valule;
   private String description;
   //getters and setters
}

package com.hibernate.example.question;
public class AttributeOwner{
   Set<Attribute>  attributes;
   //getter and setter
}

package com.hibernate.example.question;
public class A extends AttributeOwner
{
   //some A fields and methods
}

package com.hibernate.example.question;
public class B extends AttributeOwner
{
   //some B fields and methods
}

package com.hibernate.example.question;
public class C extends AttributeOwner
{
   //some C fields and methods
}


每个此类都在其自己的文件中。我想将Attribute保存在3个不同的表中:AAttributes,BAttributes和CAttributes-该表中的2列将是相同的:值和说明,但是每个属性类型(A,B或C)将具有自己的ID(Attribute_ID),和A_ID / B_ID / C_ID-引用表A / B / C的行。
我不想在一个表中有属性,而在2个列中有3个交叉引用表,它们链接到属性表的一行和所有者的一行(A / B或C表的行)。
可以使用Hibernate来实现这样的事情吗?

最佳答案

为什么不让从AttributeOwner扩展的三个类共享父级的ID。结合使用AttributeOwner_ID-A_ID,AttributeOwner_ID-B_ID,AttributeOwner_ID-C_ID使其具有唯一性,您只需提供AttributeOwner和Id属性并使用
@Inheritance(strategy = InheritanceType.JOINED)

10-04 11:37