我会试着总结一下我的问题。
我有一个基类“Base”,有三个属性。四个类继承自它 - “A”,“B”,“C”和“D”。他们添加了自己的附加属性。我已经使用InheritanceType.JOINED映射了它。现在我想搜索“Base”实体,这意味着我搜索所有“A”,“B”,“C”和“D”实体的公共属性。我知道该怎么做。 Hibernate支持开箱即用。
但我希望有一个功能,不是搜索所有类型,而是搜索其中的一部分。例如,有复选框,用户选择搜索“A”和“D”。再次搜索“Base”类的常见三个属性。我是否必须向基类添加一个额外的列以区分类型并手动填充它?我确信Hibernate有一些开箱即用的东西,但我找不到它。
此致 斯托
答案 0 :(得分:1)
您可以在HQL from子句中命名多个实体:
from A,D where prop1=:value
也许您需要单独在where子句中命名属性(我不期望,但你必须尝试):
from A as aa,D as dd where aa.prop1= :value or dd.prop1= :value
答案 1 :(得分:0)
我尝试过上面写的内容并且有效。因此,在“基础”实体中添加一列“类型”,以区分子项。查询为:"from Base where (prop1=:value1) and (prop2=:value2) and (prop3=:value3) and (type in ('1', '4'))"
。