Querydsl:在查询结果中使枚举不变

时间:2015-04-21 11:27:19

标签: 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")

1 个答案:

答案 0 :(得分:0)

也许你可以试试CaseBuilder

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

请参阅reference