我有下一个问题:
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)