【问题标题】:Querydsl need to query where integer column is less than valueQuerydsl需要查询整数列小于值的位置
【发布时间】:2012-10-30 16:51:33
【问题描述】:

我在编写将在整数列上执行简单的小于或等于比较的 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: Undeclared path '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,但这是第一个障碍,我很难编写一个最简单的查询。任何帮助或建议将不胜感激。

【问题讨论】:

    标签: java querydsl


    【解决方案1】:

    手动路径查询是这样的

    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 类的外观如何?代码生成中可能存在一些问题。

    【讨论】:

    • 这对我有用!错误消失了,查询返回值。感谢蒂莫的帮助。
    • 好的,但您能告诉我您是如何获得 SimplePath 的吗?那不应该发生。
    • 嗯,我基本上只是使用eclipse中的注释处理器来生成QCommand和其他querydsl文件。我正在使用 querydsl-jpa-2.7.1-apt-hibernate-one-jar.jar 并指定输出目录,并且在每次构建后在源文件目录中生成文件。我可能使用了错误的版本吗?我不得不尝试该 jar 文件的几个不同版本,因为当它尝试生成文件时,我遇到了其他版本的空指针异常。
    • 你的域类中的 retryCount 类型是什么?有注释吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多