我正在研究一个Hibernate继承映射问题,我似乎无法找到答案。
我有两个班级:
Child extends Parent
我已将它们映射为两个不同的模型,只使用2个hbm文件,没有继承,只有一个<class>
元素。这意味着子项的hbm确实重复了父项的hbm中定义的字段。
这样做的原因是我希望它们完全独立,因为孩子的约束不同于父,所以它们被映射到2个不同的表作为2个不同的模型,它们恰好是java中的子父。
现在的问题是查询不是独立运行的--Hibernate知道2个java类之间有继承关系所以当我尝试检索Child
的实例时,Hibernate会为它找到2个实现者,返回两个表的结果。
我知道这是一种奇怪的使用案例,但如果有人有任何建议不涉及删除Child
和Parent
之间的继承(我正在考虑如果我找不到另一种解决方案),我会先尝试别的。
答案 0 :(得分:0)
让我在这个答案之前加上警告
话虽如此,你不应该像这样区分继承的查询结果。这不是正常用法。通常,查询结果应基于表中的字段。我建议创建一个布尔字段isChild
,子构造函数设置为true
,父构造函数设置为false
。然后,您可以根据该字段查询所有对象,以获取所有父项或所有子项。