高效复杂的NHibernate Criteria查询

时间:2012-06-20 12:10:19

标签: c# hibernate nhibernate hibernate-criteria nhibernate-criteria

我有一个APVendor类,其中包含APInvoice个类和一个唯一Name的集合;每个APInvoice都有APPayment个类的集合。每个APPayment对象只引用一个BankAccount类,ClearedDateAmountCheckNumber属性。

如果银行对帐单有支票记录,请说我的 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 = ????

1 个答案:

答案 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进行这样的静态查询。