在没有表映射的情况下继承Hibernate对象
我想在项目中使用如下定义的hibernate对象。在没有表映射的情况下继承Hibernate对象
@Table(name = "Parent")
class Parent{
int id;
String name;
}
@Table(name = "Child")
class Child extends Parent{
String schoolNo;
}
但是在数据库中; 这两张表没有关系。
父表的列是; ID,名称
子表列是; ID,名称和schoolNo
如果我使用
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
当我发送一个查询父对象,冬眠的小孩和父母表使用UNION但我想只从父表中选择。
如果我用
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
休眠想要一个鉴别列。
我需要hibernate发送每个类的选择查询到它的表。
此致敬礼。
TABLE_PER_CLASS这里是正确的策略。
Hibernate在两个表上生成一个联合查询,但这应该仍然有效,这很奇怪。在错误表上的子查询不会找到任何东西,所以结果是正确的。这听起来像是Hibernate的子类查询生成中的一个错误。
看起来像真,但“不会找到任何东西”并不是真的,正如我之前所说,这些是视图,并使用一些共享表进行查询,我试着从两个表中真正列出值。 – 2012-01-30 07:01:40
只有当父母和孩子都使用相同的ID时,情况才会如此。情况并非如此。这是否发生? – 2012-01-30 13:25:22
不幸的是 – 2012-01-30 14:44:50
在类似的情况下,我在父表上使用@Inheritance(strategy = InheritanceType.JOINED)
。
见在Hibernate文档的详细信息:http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html/entity.html#d0e1168
如果我使用JOINED策略,hibernate生成的SQL显示为“Select * from Parent,Child其中Parent.id = Child.id(+),但我只需要”从*选择子*“或仅从”父*选择*“ – 2012-01-27 15:47:59
为什么在表之间没有关系时定义继承策略? – Perception 2012-01-27 13:16:56
我明白你对一个愚蠢的建筑的想法。其实这些都不是桌子。这些视图产生了很多表组合。相同的字段,但数据来自真正不同的表格。实际上,对于开发人员而言,结果对象是相同的,但有一点区别我希望解释清楚。 – 2012-01-27 13:24:22
你有没有试过只使用@Inheritance? – 2012-01-27 14:39:14