2015-04-21 19 views
0

我遇到了一個用例,我需要將enum常量放在查詢結果中。我的查詢看起來像這樣:Querydsl:將枚舉常量放在查詢結果中

QTable qTable = QTable.table; 

JPAQuery query = ... 

SomeDTO someDTO = query.singleResult(Projections.fields(SomeDTO.class, 
       ..., 
       someBooleanExpression ? qTable.enumField : <ENUM_CONSTANT>, 
       ...)); 

我正在尋找一種方法來在ENUM_CONSTANT中放置一些常量枚舉值。

我試過各種組合的Expresssions.as,Expressions.constantAs或EnumTemplate,但都沒有工作。我認爲必須有一個簡單的方法來解決這個問題,但我不知道如何。

我在尋找類似:

(MyEnum.MyValue).as("enumField") 
+0

接近問題的另一個角度,你可以使用'coalesce'在你的選擇列表中,以便在代碼調用'singleResult'時,'enumField'已經具有正確的值? –

回答

0

也許你可以試試CaseBuilder

Expression<MyEnum> cases = new CaseBuilder() 
    .when(someBooleanExpression).then(qTable.enumField) 
    .otherwise(MyEnum.ENUM_CONSTANT); 

看到reference