2016-04-28 41 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