Given the following classes:
class User {
@OneToMany
Set<Transaction> transactions
}
class Transaction {
BigDecimal money;
}
I'm stumped how to perform an aggregate, as the functions don't appear to be available on a the following query:
QUser $user = QUser.user;
QTransaction $transaction = QTransaction.transaction;
query().from($user)
.innerJoint($user.transactions, $transaction)
.where($user.eq(myUser))
// Now what?
As a bonus -- is this possible if the money
is persisted as a Joda Money type, rather than as a BigDecimal?
(I'm using UserType's Joda Money support to facilitate persistence)
Something like this should work
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 doesn't have (yet) direct support for Joda Money, so using Joda Money the sum() method won't be available directly.