2015-03-21 3 views
0

Скажем, у меня есть resolution с ArrayList коллекцией refund объектов с целым числом amount.Hibernate поиск коллекция всего

Конечный результат: Я хочу найти на resolution s на сумму refund's amount s, без использования HQL.

В настоящее время я делаю это путем суммирования в MySQL, который неуклюж, но он поддерживает нормализацию, и я могу гарантировать, что это правильно.

Способ, которым я думал сделать это, имеет refundTotal в resolution, который будет полем в базе данных. У меня есть приватный аргумент 0, который проходит через refund, суммирует 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; 
} 

Если я обновлю в изоляции resolution в refund однако, я должен получить и сохранить resolution так refundTotal остается последовательным.

Я уверен, что это очень распространенный сценарий, для которого в спящем режиме есть решение?

ответ

0

Вы можете рассмотреть возможность использования @Formula заменить коллекцию возврата, что-то вроде этого:

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

см подробно here

Смежные вопросы