那是我的代码:
final JPAQuery query = new JPAQuery(entityManager);
final List<Tuple> myList = query
.from(QPerson.person)
.groupBy(QPerson.person.name)
.where(myBooleanExpression) //myBooleanExpression declared at the top of code
.list(QPerson.person.name,
QPerson.person.cash.sum());
我想做的是列出:
名称(无条件)
总和(现金)仅当(条件),其他(..)时
有什么建议吗?
最佳答案
您可以根据情况使用SQL CASE
,例如:
final JPAQuery query = new JPAQuery(entityManager);
final List<Tuple> myList = query
.from(QPerson.person)
.groupBy(QPerson.person.name)
.where(myBooleanExpression)
.list(QPerson.person.name,
new CaseBuilder()
.when(yourOtherBooleanExpression).then(QPerson.person.cash.sum())
.otherwise(yourOtherNumericExpressionOrLiteral));
yourOtherBooleanExpression
应该是Predicate
(例如BooleanExpression
)yourOtherNumericExpressionOrLiteral
应该是NumberExpression<T>
或T
本身,其中T
是QPerson.person.cash
的基本类型。