2016-06-17 1 views
0

조인 된 테이블의 결과를 제한하는 기준을 어떻게 설정합니까?조인 된 행의 선택 기준 설정

<class name="PaymentAccount" table="paymentaccount"> 
<id name="paymentaccountno"> 
    <generator class="sequence"> 
    <param name="sequence_name">paymentaccount_paymentaccountno_seq</param> 
    </generator> 
</id> 
<set name="accountitems" table="paymentaccountitem" inverse="false" lazy="true" fetch="select" cascade="all"> 
    <key column="paymentaccountno" /> 
    <one-to-many class="PaymentAccountItem" /> 
    </set> 
</class> 

<class name="PaymentAccountItem" table="paymentaccountitem"> 
<id name="paymentaccountitemno"> 
    <generator class="sequence"> 
    <param name="sequence_name">paymentaccountitem_paymentaccountitemno_seq</param> 
    </generator> 
</id> 
<property name="invoiced" /> 
</class> 

나는 목록을 얻으려면 다음과 같이 PaymentAccount와 PaymentAccountItem 사이에 일대 다 관계가있다

// A customers account 
public class PaymentAccount { 
    private int paymentaccountno; 
    private Set<PaymentAccountItem> accountitems; 
} 

// Some invoice item related to the account above 
public class PaymentAccountItem { 
    private int paymentaccountitemno; 
    private boolean invoiced; 
} 

: (오직이 질문에 대한 관련 필드 포함)이 두 클래스를 고려 모든 PaymentAccount 객체 중 (이 경우) accountitems-Set은 "invoiced = false"를 갖는 객체 만 포함해야합니다. 나는 (바람직하게는 내 코드 좋은 및 SQL-무료로 가능하면 유지) 나를 위해이 일을 최대 절전 모드합니까 어떻게

SELECT * from paymentaccount pa, paymentaccountitem pai WHERE pa.paymentaccountno=pai.paymentaccountno AND pai.invoiced=false; 

:

내가 내가 좋아하는 뭔가를 할 것이라고 자신 SQL은 쿼리 작성했다.

감사합니다.

답변

0

쿼리의 결과 것은 늘 엔티티 일, 당신이 시도 할 수 있습니다 :

Query query = session.createSQLQuery(
"SELECT * from paymentaccount pa, paymentaccountitem pai WHERE pa.paymentaccountno=pai.paymentaccountno AND pai.invoiced=false"); 
List result = query.list();