【发布时间】:2016-08-26 08:34:46
【问题描述】:
这是我的代码:
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());
我要做的是列出:
- 名称(无条件)
- sum(cash) ONLY IF(条件),ELSE (..)
有什么建议吗?
【问题讨论】:
-
好吧,你不是自己解决了它 - 你循环遍历列表并有一个输出列表,并在循环中创建你的 if-else ...
-
@mayha 谢谢你的建议,你能给我一个代码示例吗?我想更好地理解它。抱歉,我是 querydsl 的新手,文档 (querydsl.com/static/querydsl/2.1.0/reference/html/ch03.html) 真的很差..
-
这取决于您需要输出的格式 - 如果您只想在某处显示它,您可以将其保存为字符串 ...
-
@mayha 我必须将名称取为 String,cash.sum 取为 BigDecimal,并用各自的类型填充一个具有两个属性的 Bean
-
或者,您可以在
list()方法调用中使用带有CaseBuilder 的SQL CASE。
标签: java sql postgresql querydsl