我正在使用 EclipsLink 并且遇到了这个问题。
JPQL bellow 只给我带来一个结果,那就是正确的结果:
select distinct c from Car c join c.person p where p.dogs is empty
.
结果是:车名:Yellow Submarine
_
但是当我创建以下标准时:
CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
CriteriaQuery<Car> criteriaQuery = criteriaBuilder.createQuery(Car.class);
Root<Car> mainRoot = criteriaQuery.from(Car.class);
criteriaQuery.select(mainRoot);
criteriaQuery.distinct(true);
Join<Person, Car> join = mainRoot.join("person", JoinType.INNER);
// Is this right?
criteriaQuery.where(criteriaBuilder.and(criteriaBuilder.isEmpty(join.get("dogs").as(List.class))));
给出错误结果:车名:Black Horse,车名:White Thunder,车名:Herbie,车名:Yellow Submarine
它带来了数据库中的所有数据。我错过了什么吗?
上述相同的标准适用于 Hibernate。=/
谢谢您的帮助。