假设我有resolution
个ArrayList
个refund
个对象集合,其整数为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有一个解决方案吗?
答案 0 :(得分:0)
您可以考虑使用@Formula
来代替退款系列,如下所示:
@Formula(value = "select sum(t.amount) from User_Transaction t where t.abstractenvelope_id = id")
private Long total;
详见here