我需要通过Hibernate对存储在数据库中的某些数据进行聚合,所以我想使用HQL来获取我需要的数据.
Transaction
id
userEmail
moneyPaid
Run Code Online (Sandbox Code Playgroud)
现在..用userEmail确定的用户聚合所有moneyPaid的最佳方法是什么.我想找回将拥有用户电子邮件的实体,并使用聚合的moneyPayd属性.
这样做的最佳和最优雅的方法是什么?
可能如果我有另一个实体说用户:
User
id
email
address
Run Code Online (Sandbox Code Playgroud)
是否有任何方便的方法不涉及加入User with Transaction的多个代码,聚合moneyPaid并返回完全不同类型的实体列表,如:
AggregatedData
email
totalMoneyPaid
address
Run Code Online (Sandbox Code Playgroud)
我知道一些方法可以做到这一点,但它们都优雅而简洁,任何想法都值得赞赏.
Run Code Online (Sandbox Code Playgroud)select u.email, sum(t.moneyPaid), u.address from Transaction t left join t.user u group by u.email, u.address;
我对这个查询没问题,如果你不想要一个List<Object[]>返回,你可以这样写:
select new org.sample.RequestResult(u.email, sum(t.moneyPaid), u.address) from Transaction t
left join t.user u
group by u.email, u.address;
Run Code Online (Sandbox Code Playgroud)
创建一个对象org.sample.RequestResult使用构造字符串电子邮件,龙(或者其他,你的实体的字段的类型)moneyPaid和字符串地址
查询将返回一个 List<RequestResult>
您可以只写select new map(...)一个从别名到选定值的Map返回
| 归档时间: |
|
| 查看次数: |
1839 次 |
| 最近记录: |