我有一个APVendor
类,其中包含APInvoice
个类和一个唯一Name
的集合;每个APInvoice
都有APPayment
个类的集合。每个APPayment
对象只引用一个BankAccount
类,ClearedDate
,Amount
和CheckNumber
属性。
如果银行对帐单有支票记录,请说我的 Bank of Foo 支票帐户,查看 1111 , $ 1000.00 ,我想查看我的持久层中是否存在付款,并标记APPayment
对象的ClearedDate
属性。
我可以通过查询供应商,然后查询供应商的发票,然后查找针对BankAccount
编写的支票编号来执行此操作,但我确信有一种更有效的方法可以将其编写为Criteria
{ {1}}查询。
有人可以帮助我看看应该怎么样?以下是我在SQL中编写查询以获取我需要使用的对象图的方法:
select p.*, i.*, v.*
from appayments p
join bankaccounts a on p.bankaccountid = a.bankaccountid
join apinvoices i on i.invoiceid = p.invoiceid
join apvendors v on v.vendorid = i.vendorid
where a.bankaccountid = ????
and p.checknumber = ????
答案 0 :(得分:1)
HQL查询与SQL查询非常相似:
select payment from APPayment payment
inner join payment.BankAccount bankAccount
left join fetch payment.Invoice invoice
left join fetch invoice.Vendor vendor
where bankAccount.id = :accountId
and payment.checkNumber = :checkNumber
Criteria查询留作练习,但我没有看到使用Criteria进行这样的静态查询。