Hibernate搜索集合总计

时间:2015-03-21 11:59:45

标签: java mysql hibernate

假设我有resolutionArrayListrefund个对象集合,其整数为amount

最终结果是,我想在resolution refund的{​​{1}} s上搜索,而不使用HQL。

目前我通过在MySQL中总结这是笨拙的,但它保持规范化,我可以保证它是正确的。

我想到这样做的方法是在amount中使用refundTotal,这将是数据库中的一个字段。我有一个私有的0参数setter循环遍历resolution,总结refund并在刷新发生时存储它。 setter是在数据库检索上运行的,所以当它从数据库中出来时它是正确的。无论何时需要,getter都会确保其正确。

amount

如果我单独private setRefundTotal(){ ArrayList<Refund> refunds = getRefunds(); Integer refundTotalSum = 0; for(refunds as Refund refund){ refundTotalSum+=refund.getAmount(); } this.refundTotal = refundTotalSum; } public integer getRefundTotal(){ this.setRefundTotal(); return totalRefund; } 更新refund,我必须获取并保存resolution,以便resolution保持一致。

我确信这是一个非常常见的情况,hibernate有一个解决方案吗?

1 个答案:

答案 0 :(得分:0)

您可以考虑使用@Formula来代替退款系列,如下所示:

@Formula(value = "select sum(t.amount) from User_Transaction t where t.abstractenvelope_id = id")
private Long total;

详见here