21

次のHQLがあると仮定します

EntityManager.createQuery("SELECT a FROM a WHERE a.b = :par OR a.c = :par").setParameter("par", obj);

動作しないようです。1 つのパラメーターのみを使用してこの問題を解決する方法を知っている人はいますか?

4

2 に答える 2

31
setParameter(String name,Object val)

これは、名前付きパラメーターに値をバインドするために使用されます。ただし、問題のないクエリで名前が複数回発生する可能性があります。したがって、そのクエリのデータが本当にあるかどうかを一度確認してください。

こちらのドキュメントを確認してください

そのドキュメントの本文の一部

名前付きクエリ パラメータは、クエリ文字列内の :name の形式のトークンです。setParameter("foo", foo, Hibernate.INTEGER); を呼び出すことにより、値が整数パラメーター :foo にバインドされます。例えば。名前は、クエリ文字列に複数回表示される場合があります。

それでも結果が得られない場合は、2 つの名前を使用して設定してみてください

EntityManager.createQuery("SELECT a FROM a WHERE ab = :par1 OR ac = :par2").setParameter("par1", obj).setParameter("par2", obj);

于 2013-04-27T11:47:08.450 に答える