【发布时间】:2016-03-29 11:33:43
【问题描述】:
我有下表:
我想用以下规则形成一个查询: 获取 type 不是 type1 和 type2 且 Flavor 不是 flavor1 的 product1。
类型可以是 type1、type 2 或 null。
我的查询是这样形成的:
CriteriaBuilder cb = this.getEntityManager().getCriteriaBuilder();
CriteriaQuery<Product> searchQuery = cb.createQuery(Product.class);
Root<Product> u = searchQuery.from(Product.class);
List<Predicate> predicates = new ArrayList<Predicate>();
predicates.add(cb.and(cb.equal(u.get("product"),"product1"),cb.isNull(u.get("type")),cb.notEqual(u.get("flavor"), "flavor1")));
问题是这个查询什么也没返回……我错过了什么吗? 请注意,我的问题是指逻辑而不是语法,因为语法是通过形成返回一些虚拟结果的更简单查询来检查的。 谢谢!
【问题讨论】:
-
相关实体的映射(可能是
Product和Service映射)。此外,如果您的“where 子句”的基础是 AND,则将谓词添加到您的predicates而不包含在 AND 中。
标签: java mysql jpa predicates