在Querydsl中选择Long类型变量

时间:2016-04-28 15:24:55

标签: hibernate jpa querydsl

当我尝试运行此查询时:

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

我遇到编译错误,因为构造函数在变量NumberPath<Long>处期望Long而不是count,那么如何在querydsl中选择变量?

我将构造函数中的count替换为:

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

但我得到了这个执行

java.lang.IllegalArgumentException: java.lang.ClassCastException@14edf4

1 个答案:

答案 0 :(得分:0)

您正在尝试通过QueryDSL构造函数传递常量。

检查Expressions静态类以获取更多信息: 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()

进行计数