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