Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate继承搜索_Hibernate_Search_Inheritance - Fatal编程技术网

Hibernate继承搜索

Hibernate继承搜索,hibernate,search,inheritance,Hibernate,Search,Inheritance,我将试着总结我的问题 我有一个基类“base”,它有三个属性。它继承了四个类——“A”、“B”、“C”和“D”。它们添加自己的附加属性。我已将此映射为InheritanceType.JOINED。现在我想搜索“基本”实体,这意味着我搜索所有“A”、“B”、“C”和“D”实体的公共属性。我知道怎么做。Hibernate支持开箱即用 但我想有一个功能,不是搜索所有类型,而是搜索其中的一部分。例如,有复选框,用户选择搜索“A”和“D”。同样,搜索基于“基类”的三个公共属性。我是否必须向基类添加额外的列

我将试着总结我的问题

我有一个基类“base”,它有三个属性。它继承了四个类——“A”、“B”、“C”和“D”。它们添加自己的附加属性。我已将此映射为InheritanceType.JOINED。现在我想搜索“基本”实体,这意味着我搜索所有“A”、“B”、“C”和“D”实体的公共属性。我知道怎么做。Hibernate支持开箱即用

但我想有一个功能,不是搜索所有类型,而是搜索其中的一部分。例如,有复选框,用户选择搜索“A”和“D”。同样,搜索基于“基类”的三个公共属性。我是否必须向基类添加额外的列来区分类型并手动填充它?我肯定Hibernate有现成的东西,但我找不到

问候,,
Petar

您可以在HQL from子句中命名多个实体:

from A,D where prop1=:value
也许您需要在where子句中单独命名属性(我希望不会,但您必须尝试):


您可以在HQL from子句中命名多个实体:

from A,D where prop1=:value
也许您需要在where子句中单独命名属性(我希望不会,但您必须尝试):


我试过上面写的东西,效果很好。因此,在“Base”实体中添加一列“type”,以区分子实体。查询是:
“从基where(prop1=:value1)和(prop2=:value2)和(prop3=:value3)和(键入('1','4')”

我尝试了我上面写的内容,并且效果很好。因此,在“Base”实体中添加一列“type”,以区分子实体。查询是:
“from Base where(prop1=:value1)and(prop2=:value2)and(prop3=:value3)and(键入('1','4')”

EJB,谢谢您的回答!我要试一试。但我一直在寻找类似“from Base where prop1=:value and TypeOfChilds in(A.class,D.class)”的内容。Hibernate是否可能实现这一点?我尝试了您的建议,但这两个建议对我都不起作用。也许我会在基类中添加一个额外的列“type”来区分。因此查询将如下所示:from Base where prop1=:value和((type=1)或(type=4))。但我觉得有更好的解决方案。EJB,谢谢你的回答!我会尝试一下。但我一直在寻找类似“from Base where prop1=:value和TypeOfChilds in(a.class,D.class)的东西。Hibernate可能吗?我试过你的建议,但两个都不适合我。也许我会在基类中添加一个额外的列“type”来区分。因此,查询将如下所示:“from Base where prop1=:value and((type=1)或(type=4))”。但我觉得有更好的解决办法。