鉴于以下类别:
class User {
@OneToMany
Set<Transaction> transactions
}
class Transaction {
BigDecimal money;
}
我很难理解如何执行聚合,因为这些函数似乎不适用于以下查询:
QUser $user = QUser.user;
QTransaction $transaction = QTransaction.transaction;
query().from($user)
.innerJoint($user.transactions, $transaction)
.where($user.eq(myUser))
// Now what?
作为奖励 - 如果money
作为Joda Money类型而不是BigDecimal持久存在,这是否可行?
(我正在使用UserType's Joda Money支持来促进持久性)
答案 0 :(得分:1)
这样的事情应该有效
QUser $user = QUser.user;
QTransaction $transaction = QTransaction.transaction;
query().from($user)
.innerJoin($user.transactions, $transaction) //inner join clause
.where($user.eq(myUser))
.singleResult($transaction.money.sum());
Querydsl没有(还)直接支持Joda Money,因此使用Joda Money时,sum()方法将无法直接使用。