我想在项目中使用如下定义的hibernate对象。
@Table(name = "Parent")
class Parent{
int id;
String name;
}
@Table(name = "Child")
class Child extends Parent{
String schoolNo;
}
但在数据库中;这两张表没有任何关系。
父表列为;id,名称
子表列为;身份证、姓名和学校无
如果我使用
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
当我发送Parent对象的查询时,hibernate在Child和Parent表上使用UNION,但我只想从Parent表中进行选择。
如果我使用
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
hibernate想要一个鉴别器列。
我需要hibernate将每个类的选择查询发送到它的表。
致以最良好的问候。
TABLE_PER_class是正确的策略。
Hibernate在两个表上生成联合查询是很奇怪的,但这应该仍然有效。对错误表的子查询找不到任何内容,因此结果是正确的。这听起来像是Hibernate的子类查询生成中的一个错误。
在类似的情况下,我在父表上使用@Inheritance(strategy = InheritanceType.JOINED)
。
请参阅Hibernate文档中的更多信息:http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html/entity.html#d0e1168