高效的复杂 NHibernate 条件查询



我有一个APVendor类,它有一个APInvoice类的集合和一个独特的Name;每个APInvoice都有一个APPayment类的集合。 每个APPayment对象只引用一个BankAccount类、一个ClearedDate、一个Amount和一个CheckNumber属性。

对于具有支票记录的银行对账单,假设我的 Bank of Foo 支票账户 Check 1111,金额为 1000.00 美元,我想查看付款是否存在于我的持久化层中,并标记APPayment对象的ClearedDate属性。

我可以通过查询供应商,然后

查询供应商的发票,然后查找针对BankAccount写的支票号码来做到这一点,但我相信有一种更有效的方法将其编写为一个Criteria查询。

有人可以帮我看一下应该是什么样子的吗? 以下是我在 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 = ????

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

条件查询保留为练习,但我没有看到使用此类静态查询的条件的指针。

最新更新