在没有表映射的情况下继承Hibernate对象



我想在项目中使用如下定义的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

最新更新