2016-09-07 8 views
-1

私はHibernateから始まります。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で動作させることができません。

Unitのリストを返すためにこのクエリを作成するにはどうすればよいですか?

これが私の最初の質問ですので、あなたは、より詳細な情報あなたはHQLの下に使用することができます

+1

[IN句でない使用方法を休止状態]の可能な重複(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();