我遇到了一个用例,我需要在查询结果中放置枚举常量。我的查询如下:
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 :(得分:0)
也许你可以试试CaseBuilder
Expression<MyEnum> cases = new CaseBuilder()
.when(someBooleanExpression).then(qTable.enumField)
.otherwise(MyEnum.ENUM_CONSTANT);
请参阅reference