2016-04-28 72 views
2

当我尝试运行此查询选择长型变量:在Querydsl

Long count = ...; 
List<CritereItem> items= new JPAQuery(entityManager).from(foo) 
        .list(new QCritereItem(foo.id, foo.name, count )); 

我得到了编译错误,因为构造预计NumberPath<Long>Long在可变count,那么如何选择querydsl变量?

我通过更换计数构造:

Expressions.numberTemplate(Long.class, count.toString()) 

但我得到这个execption

java.lang.IllegalArgumentException: [email protected] 
+0

做到这一点请提供'CritereItem'的代码 – miensol

回答

0

您试图通过QueryDSL构造函数传递一个常数。

检查表达式的更多信息静态类: QueryDSL API Reference

NumberExpression<Long> count = Expressions.asNumber(...); 
List<CritereItem> items = new JPAQuery(entityManager).from(foo) 
          .list(new QCritereItem(foo.id, foo.name, count)); 

还要注意的是,如果你想要聚合计数,你可以用foo.count()

+0

函数'asNumber()'未定义为'Expressions'类型 – Youssef

+0

您正在使用哪种版本的QueryDSL?尝试更新到最新版本。 –

+0

我使用3.4.1版本 – Youssef