Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/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
Jpa 带条件的Eclipselink-(对于结果错误的子查询为空)_Jpa_Orm_Eclipselink - Fatal编程技术网

Jpa 带条件的Eclipselink-(对于结果错误的子查询为空)

Jpa 带条件的Eclipselink-(对于结果错误的子查询为空),jpa,orm,eclipselink,Jpa,Orm,Eclipselink,我正在与EclipsLink合作,我遇到了这个问题 下面的JPQL命令只为我带来了一个结果,即正确的结果: 选择不同于汽车的c加入c.person p,其中p.dogs为空 结果是: 车名:黄色潜水艇 _ 但当我创建以下标准时: CriteriaBuilder-CriteriaBuilder=em.getCriteriaBuilder(); CriteriaQuery-CriteriaQuery=criteriaBuilder.createQuery(Car.class); Root mainR

我正在与EclipsLink合作,我遇到了这个问题

下面的JPQL命令只为我带来了一个结果,即正确的结果:

选择不同于汽车的c加入c.person p,其中p.dogs为空

结果是: 车名:黄色潜水艇

_

但当我创建以下标准时:

CriteriaBuilder-CriteriaBuilder=em.getCriteriaBuilder();
CriteriaQuery-CriteriaQuery=criteriaBuilder.createQuery(Car.class);
Root mainRoot=criteriaQuery.from(Car.class);
criteriaQuery.select(mainRoot);
criteriaQuery.distinct(true);
Join-Join=mainRoot.Join(“person”,JoinType.INNER);
//是这样吗?
where(criteriaBuilder.and(criteriaBuilder.isEmpty(join.get(“dogs”).as(List.class))

给出了错误的结果:车名:黑马,车名:白雷,车名:赫比,车名:黄潜艇

它带来了数据库中的所有数据。我遗漏了什么吗

以上相同的标准适用于Hibernate=/


感谢您的帮助。

生成的SQL是什么

试试看

criteriaQuery.where(criteriaBuilder.isEmpty(join.<Collection>get("dogs"));
criteriaQuery.where(criteriaBuilder.isEmpty(join.get(“dogs”));
还可以尝试最新版本。

看起来像是一个bug。=/谢谢[=