0

나는 APInvoice 클래스의 콜렉션과 유일한 Name을 가진 APVendor 클래스를 가지고있다; 각 APInvoice에는 APPayment 클래스 모음이 있습니다. 각각의 APPayment 개체는 정확히 BankAccount 클래스, ClearedDate, AmountCheckNumber 속성을 참조합니다.효율적인 NHibernate Criteria 질의

체크 기록을 가지고 은행 문

, $ 1000.00의 양, 1111을 확인의 푸 당좌 예금 계좌의 내 은행을 가정 해 봅시다, 내가 지불 내 지속 된 레이어에 있는지보고 싶어 APPayment 개체의 ClearedDate 속성을 표시합니다.

공급 업체를 쿼리 한 다음 공급 업체의 송장을 쿼리 한 다음 BankAccount에 대해 작성된 수표 번호를 찾고이 방법을 사용할 수 있습니다. 그러나이 방법을 Criteria 쿼리로 작성하는 것이 훨씬 효율적입니다.

누군가가 어떻게 보일 수 있습니까?

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 

기준 쿼리 :

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 쿼리와 매우 유사하다 : 여기에 내가 작업을해야 객체 그래프를 가져 오기 위해 SQL에서 쿼리를 작성합니다 방법 운동으로 남아 있지만, 정적 쿼리에 대한 기준을 사용하여 poin tin을 볼 수 없습니다.

+0

감사합니다. –