Было бы что-то похожее на это:
String hql = '''
select
b.securityType,
b.symbol,
b.securityDescription,
b.tradeDateQty,
c.tradeDateQty,
c.tradeDateQty - b.tradeDateQty,
b.costBasis,
c.costBasis,
c.costBasis - b.costBasis
from
Account a, AdventPosition b, FidelityPosition c
where
a.fixedAccountNumber = b.accountNumber
and a.fixedAccountNumber = c.accountNumber
and b.symbol = c.symbol
and b.accountNumber = :accountNumber
'''
def accountNumber = '636296651'
def results = Account.executeQuery(hql, [accountNumber: accountNumber])
Результатом будет ArrayList объекта [], так что вы можете повторить его с чем-то вроде
for (row in results) {
def securityType = row[0]
def symbol = row[1]
def securityDescription = row[2]
def axys_qty = row[3]
def fidelity_qty = row[4]
def qty_diff = row[5]
def axys_cost = row[6]
def fidelity_cost = row[7]
def cost_diff = row[8]
}
Я заменил жестко запрограммированный номер счета на именованный параметр; Вы можете использовать обычный? как в SQL, если вы предпочитаете и запускаете «def results = Account.executeQuery (hql, [accountNumber])», и, конечно, если вы намеревались использовать его жестко, восстановите его и не передавайте второй параметр, run 'def results = Account.executeQuery (hql)'