当我尝试运行此查询时:
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
答案 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()