2016-04-27 10 views
0
// a is some String and bList is some list of type ArrayList 
String findQuery = "SELECT T FROM " + MyClass.class.getName() + " T where a = :itemA and (b NOT IN (:bList))"; 
Query query = factory.getCurrentSession().createQuery(findQuery); 
query.setParameter("itemA", a); 
query.setParameter("bList", bList); 

これは私が実行しているクエリです。代わりに私に結果を与える代わりにa = itemA and b is not in bList、それは私に結果を与えるa = itemA and b IS IN bListHibernateのHQL NOT IN節は機能していないようです。

ご協力いただければ幸いです。

+0

**とNOT(b IN(:bList))**についてはどうですか? – StanislavL

+0

@HoganそれはSQLではなくHQLです。クエリ(NativeQueryではなく)が作成されましたhttp://stackoverflow.com/questions/6584898/how-to-set-list-of-values-as-parameter-into-hiberante-query – StanislavL

+1

SQLログを有効にしてSQL要求はHibernateによって生成されます。 –

答えて

4
String findQuery = "SELECT T FROM " + MyClass.class.getName() + " T where T.a =:itemA and T.b NOT IN (:bList)"; 
Query query = factory.getCurrentSession().createQuery(findQuery); 
query.setParameter("itemA", a); 
query.setParameterList("bList", bList); 
+0

私はちょうどそれを試みた(私は私の質問に投稿した解決策を試す前でもあった)、それは動作していなかった。 短いストーリーですが、別のプロセスを実行していました。これはプルしたいレコードを削除することでした。そのため、結果セットは空です。 話の道徳的なこと:馬鹿にしないでください – Beebunny

関連する問題