我有以下课程:
public abstract class Generic(){
private int Id;
...
}
public class ExtA extends Generic(){
private Generic fieldA();
private Generic fieldB();
...
}
public class ExtB extends Generic(){
private Generic fieldA;
....
}
public class ExtC extends Generic(){
...
}
对于模糊的例子,我们深表歉意。
我试图找到一种方法将这些对象保存到数据库中,但似乎找不到好方法。我希望为ExtA
,ExtB
,ExtC
设置单独的表,然后使用外键来关联包含的字段。我正在使用MySQL,并使用Java,Spring,Hibernate。有人可以告诉我一个如何做到这一点的例子,或者给我一些教程吗?
我应该提到我是处理数据库的新手。
答案 0 :(得分:2)
像这样的东西。我相对肯定Table_Per_Class策略会让你要求任何" Generic"对象和查询它的所有子类表。请记住,如果这样做,ID在所有子类类型中应该是唯一的。你必须找出一个使用正确注释的策略来告诉hibernate要做什么。但与此同时,此示例假设您在保存之前手动分配它。
@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class Generic {
@Id @Column(name="ID")
private Long id;
...
}
@Entity
@Table(name="EXTA")
public class ExtA extends Generic {
@Column(name="fieldA")
private Generic fieldA;
}