Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.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
Java 查找关联集合中至少有一个指定类型实例的实例_Java_Hibernate_Hql - Fatal编程技术网

Java 查找关联集合中至少有一个指定类型实例的实例

Java 查找关联集合中至少有一个指定类型实例的实例,java,hibernate,hql,Java,Hibernate,Hql,我有一个正在工作的现有域,无法基于关联集合中指定类型的至少一个实例限制查询结果 例如: 比如说一个人有一对多的宠物关系。Pet是抽象的,有几个子类,如Bird、Cat、Dog等,并使用表/类层次映射策略进行映射 如何在hql中编写查询以返回至少有一条关联狗的所有Person实例?由于宠物位于“多”端,它们可能会指向各自的Person实体。这意味着您只需在Pets表中的person不为null的位置选择uniquePerson。由于您使用的是每个类的表层次结构,因此有一个discrimator列,

我有一个正在工作的现有域,无法基于关联集合中指定类型的至少一个实例限制查询结果

例如:

比如说一个人有一对多的宠物关系。Pet是抽象的,有几个子类,如Bird、Cat、Dog等,并使用表/类层次映射策略进行映射


如何在hql中编写查询以返回至少有一条关联狗的所有Person实例?

由于宠物位于“多”端,它们可能会指向各自的Person实体。这意味着您只需在Pets表中的person不为null的位置选择uniquePerson。由于您使用的是每个类的表层次结构,因此有一个discrimator列,因此您可以区分类型,即“.class”

String hql = "select unique(p.person) from Pet p where p.class = ? and p.person is not null"
然后使用位置参数执行查询-即替换?跟狗猫什么的。请注意,我创建了字段名,因此您必须用实际值替换它们