gpt4 book ai didi

java - 如何形成 JPA 查询?

转载 作者:行者123 更新时间:2023-11-29 07:20:36 26 4
gpt4 key购买 nike

我有下表:

enter image description here

我想使用以下规则形成一个查询:获取产品 1,其中类型不是类型 1 也不是类型 2,并且 flavor 不是 flavor 1。

类型可以是类型 1、类型 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")));

问题是这个查询什么也没返回……我错过了什么吗?请注意,我的问题指的是逻辑而不是语法,因为语法是通过形成返回一些虚拟结果的更简单的查询来检查的。谢谢!

最佳答案

尝试删除顶级 AND 谓词。将每个谓词添加到 predicates 并使用它们创建 where

predicates.add(cb.equal(u.get("product"),"product1"))
predicates.add(cb.isNull(u.get("type")));
predicates.add(cb.notEqual(u.get("flavor"), "flavor1")); // and so on

然后

searchQuery.where(predicates.toArray(new Predicate[predicates.size()]));

最重要的是,请确保您的数据库内容与您的查询匹配,因此确实应该返回一些内容:)

正如我在“表”中看到的,“类型”列中没有空值。数据库中该列是否有空值?也许在数据库中它不为空,只有空字符串(这是一个很大的区别)

关于java - 如何形成 JPA 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36283109/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com