QueryDSL - 涉及联合的总和

时间:2013-05-14 11:13:17

标签: java querydsl

鉴于以下类别:

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支持来促进持久性)

1 个答案:

答案 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()方法将无法直接使用。