没有表映射的Hibernate对象的继承

时间:2012-01-27 13:09:59

标签: java hibernate inheritance jpa

我想在项目中使用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查询发送到它的表。

最好的问候。

2 个答案:

答案 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