0

我有一个APVendor类,它有一个APInvoice类的集合和一个唯一的Name;每个APInvoice有一个APPayment类的集合。每个APPayment对象完全参照一个BankAccount类,ClearedDate,AmountCheckNumber属性。有效的复杂NHibernate标准查询

与已检查记录中的银行对账单,让我们说我银行美孚支票帐户,检查,为$ 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 = ???? 
+0

你究竟在寻找什么?具有给定CheckNumber和给定金额的APPayment?任何其他限制?试着用英语表达你的查询,然后HQL查询将会出现。 –

+0

@JBNizet,我用SQL表达了我想要的东西......似乎比英语更容易解释。是否有意义? –

回答

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的这种静态查询的指针。

+0

这工作,谢谢! –