【发布时间】:2012-06-20 12:10:18
【问题描述】:
我有一个APVendor 类,它有一个APInvoice 类的集合和一个独特的Name;每个APInvoice 都有一个APPayment 类的集合。每个APPayment 对象仅引用一个BankAccount 类、一个ClearedDate、一个Amount 和一个CheckNumber 属性。
如果银行对账单有支票记录,比如我的 Bank of Foo 支票账户,支票 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 = ????
【问题讨论】:
-
您到底在寻找什么?具有给定 CheckNumber 和给定金额的 APPayment?还有什么限制吗?试着用英文表达你的查询,HQL 查询就会随之而来。
-
@JBNizet,我用 SQL 表达了我想要的东西......它似乎比英语更容易解释。有意义吗?
标签: c# hibernate nhibernate hibernate-criteria nhibernate-criteria