我想在项目中使用hibernate对象,如下所示。
@Table(name = "Parent")
class Parent{
int id;
String name;
}
@Table(name = "Child")
class Child extends Parent{
String schoolNo;
}
但是在数据库中; 与这两个表没有关系。
父表列是; id,name
子表列是; id,name和schoolNo
如果我使用
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
当我发送一个父对象的查询时,hibernate在Child和Parent表上使用UNION,但我只想从Parent表中选择。
如果我使用
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
hibernate需要一个鉴别器列。
我需要hibernate将每个类的select查询发送到它的表。
最好的问候。
答案 0 :(得分:2)
TABLE_PER_CLASS是正确的策略。
Hibernate在两个表上生成联合查询是奇怪的,但这仍然有用。错误表上的子查询将找不到任何内容,因此结果将是正确的。这听起来像是Hibernate为子类创建查询时的错误。
答案 1 :(得分:0)
在类似情况下,我在父表上使用@Inheritance(strategy = InheritanceType.JOINED)
。
在Hibernate文档中查看更多信息:http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html/entity.html#d0e1168