Jpa 带条件的Eclipselink-(对于结果错误的子查询为空)
我正在与EclipsLink合作,我遇到了这个问题 下面的JPQL命令只为我带来了一个结果,即正确的结果: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
选择不同于汽车的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。=/谢谢[=