Hibernate - OneToMany,每个引用不同的表而没有交叉引用表

时间:2014-12-01 07:11:00

标签: java mysql hibernate

我有下一个问题:

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
}

每个类都在自己的文件中。我想在3个不同的表中保存属性:AAttributes,BAttributes和CAttributes - 该表中的2列是相同的:值和描述,但是每个属性类型(A,B或C)都拥有它自己的ID (Attribute_ID)和A_ID / B_ID / C_ID - 对表A / B / C的行的引用。 我不希望在一个表中有属性,并且有3个具有2列的交叉引用表,链接到属性表的一行和它的所有者的一行(A / B或C表的行) )。 是否可以使用Hibernate实现这样的东西?

1 个答案:

答案 0 :(得分:0)

为什么不让从AttributeOwner扩展的三个类共享父的id。使用AttributeOwner_ID-A_ID,AttributeOwner_ID-B_ID,AttributeOwner_ID-C_ID组合使它们成为唯一,您只需要赋予AttributeOwner和Id属性并使用它们 @Inheritance(策略= InheritanceType.JOINED)