2

给定以下类:

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

4

1 回答 1

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() 方法将不能直接使用。

于 2013-05-14T12:09:40.847 回答