gpt4 book ai didi

java - Querydsl需要查询整数列小于值的地方

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:31:41 24 4
gpt4 key购买 nike

我在编写将对整数列执行简单的小于或等于比较的 JPAQuery 时遇到问题。我有 QCommand 生成的 querydsl 对象,我试图将其与 JPAquery 一起使用来执行这个非常简单的查询。我想使用 SQL 执行的查询如下所示:

select * from command where retry_count <= 10;

生成的 QCommand 对象将 retryCount 参数定义为:

public final SimplePath<Integer> retryCount = createSimple("retryCount", Integer.class);

我注意到,因为它是一个 SimplePath,所以当我尝试编写 JPAQuery 时,retryCount 变量没有像 loe 或 goe 这样的比较运算符。该列/变量只允许我执行 isNull、isNotNull、eq 和其他非常简单的运算符,但不允许比较运算符。这看起来像下面,但是,显然不会执行我想要的比较,但它可以正常工作:

JPAQuery query = new JPAQuery(entityManager);
query.from(command).where(command.retryCount.isNotNull()).list(command);

环顾四周,我看到有一种创建 NumberPath 的方法,这似乎是我想要的,但是,当我尝试下面的代码时,我得到一个异常“java.lang.IllegalArgumentException:未声明的路径'retryCount'。将此路径作为源添加到查询中以便能够引用它。”

JPAQuery query = new JPAQuery(entityManager);
NumberPath<Integer> retryCount = new NumberPath<Integer>(Integer.class, "retryCount");
return query.from(command).where(retryCount.loe(10)).list(command);

那么,我怎样才能将这条路径“添加”到源代码中。我环顾四周,找不到这样做的例子,也找不到关于应该如何完成的解释。 javadocs 在这种情况下不是很有帮助。我一直很好地使用 querydsl,但这是第一个障碍,我很难写一个最简单的查询。如有任何帮助或建议,我们将不胜感激。

最佳答案

手动路径的查询是这样的

JPAQuery query = new JPAQuery(entityManager);
NumberPath<Integer> retryCount = new NumberPath<Integer>(Integer.class, command, "retryCount");
return query.from(command).where(retryCount.loe(10)).list(command);

不同之处在于,您将 retryCount 路径创建为顶级路径,而它应该创建为具有父级的属性路径。

Command 类是什么样子的?代码生成可能存在一些问题。

关于java - Querydsl需要查询整数列小于值的地方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13143921/

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