gpt4 book ai didi

java - 如何更改此查询以使其返回满足 `minPrice` 条件的记录,即使 `keywords` 值为空?

转载 作者:行者123 更新时间:2023-11-30 05:10:10 24 4
gpt4 key购买 nike

我不知道这是否是 Google App Engine for Java 特有的问题,但如果设置为 keywords 参数的值是 null 字符串,则不会从查询,即使设置了 minPrice

如何更改此查询,使其返回满足 minPrice 条件的记录,即使 keywords 值为 null 也是如此?理想情况下,我会以某种方式对这两个条件使用相同的查询,而无需基于空字符串条件创建单独的查询。

Query qry = entityManager.createQuery("SELECT p FROM Test p 
WHERE keywords = :keywords and price >= :minPrice");

qry.setParameter("keywords", keywords);
qry.setParameter("minPrice", Integer.parseInt(minPrice));

最佳答案

这就是 GAE 数据存储的工作方式(顺便说一句,大多数关系数据库也是这样工作的!):空值等于任何内容,因此 keywords = :keywords对于包含 null keywords 的记录,您的查询的一部分为 false - 因为该部分为 false,所以 and 当然也是如此。

您需要两个查询,一个用于 keywords = :keywords,另一个用于“is null”检查,并使用它们的两个不相交的结果集(Python GAE 模拟“IN”运算符应用程序级代码,我相信 Java GAE 不会,但由于在本例中这些集合是不相交的,因此实际上没有什么神秘或困难;-)。

编辑:它是 Python 中的模拟 IN(此处可用),不是 OR; Java 中应用程序级模拟的 IN 等效项实际上是 contains

关于java - 如何更改此查询以使其返回满足 `minPrice` 条件的记录,即使 `keywords` 值为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3697118/

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