У меня есть следующие свойства в моем текущем объекте Баланс счета:
long id; // Database ID
Date date; // date when this balance object was created
boolean currentBalanceFlag; // indicates this is the most recent balance
float amount; // the total sum currently in the account balance
float depositAmount; // amount deposited that resulted in this objects amount
float withdrawalAmount; // amount withdrawn that resulted in this objects amount
Balance lastBalance; // last balance object for traversing
User user; // owner of the balance
String note; // detailed description of transaction that resulted in current blanace
На балансе выполняются только два действия. Депозиты и снятие средств.
Вопрос:
Как мне создать HQL-запрос, который будет:
-сумма всех depositAmount
для user
-сумма withdrawalAmount
для user
- вычесть результат первого суммирования из второго суммирования
-сравнить результат вычитания с amount
для user
в Balance
объекте, который имеет currentBalanceFlag
, равный true
в псевдокоде:
resultAmount = select ( sum(depositAmount) - sum(withdrawalAmount) ) from Balance where user=user
amount = select amount from Balance where user=user and currentBalanceFlag=true
И окончательный логический результат, который я хотел бы получить от одного вызова базы данных с HQL-запросом:
resultAmount == amount