2016-09-07 4 views
-1

최대 절전 모드로 시작합니다.HQL의 "NOT IN"

MySQL DB에는 2 개의 테이블이 있습니다.

1) 단위

2) 유형 : 나는 유형도 열 이름 "기간"이 같은 외래 키 Unit_IdUnit 을 가지고 VARCHAR

내가 HQL에서이 쿼리를 만들려면 :

SELECT * 
 
FROM unit 
 
WHERE IdUnit not in(SELECT Unit_IdUnit 
 
        FROM type 
 
        WHERE Period='2016-09');

MySQL에서이 쿼리를 실행하면 작동합니다. 하지만 HQL에서 작동하도록 할 수는 없습니다.

어떻게 단위 목록을 반환 할이 쿼리를 만들 수 있습니까?

이 내 첫 번째 질문입니다, 그래서 당신은 더 많은 정보 당신은 HQL 이하로 사용할 수 있습니다

+1

가능한 복제 ([절에없는 사용하는 방법 최대 절전 모드에서] http://stackoverflow.com/questions/5694620/in-hibernate-how-to-use-not- in-clause) –

+1

매핑을 게시하고 현재 솔루션으로 얻은 오류를 게시하십시오. –

답변

-1

필요하면 알려 주시기 바랍니다 :

session.createQuery(
     "from unit where IdUnit not in (SELECT Unit_IdUnit 
        FROM type 
        WHERE Period='2016-09')" 
    ).list(); 
-1

이 내가 그것을 해결하는 방법입니다.

Query query= session.createQuery("SELECT e1 FROM Unit e1 " 
 
           + "WHERE e1.idUnit NOT IN (" 
 
                 + "SELECT e2.unit " 
 
                 + "FROM type e2 " 
 
                 + "WHERE e2.period=:period)"); 
 

 
query.setParameter("period", "2016-09"); 
 
list= query.list();