Использование спящего режима с именованным параметром дважды - программирование
Подтвердить что ты не робот

Использование спящего режима с именованным параметром дважды

Предположим, что у меня есть следующий HQL

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

похоже, не работает. У кого-нибудь есть идея, как решить эту проблему, остается только один параметр?

4b9b3361

Ответ 1

setParameter(String name,Object val)

Используется для привязки значения к указанному параметру. Но имя может возникать несколько раз в запросе, который не имеет значения. Поэтому проверьте один раз, есть ли у вас действительно данные для этого запроса.

проверьте документацию здесь

Некоторые основные тексты из этой документации

Именованные параметры запроса - это токены формы: name в строке запроса. Значение привязано к целочисленному параметру: foo путем вызова setParameter ( "foo", foo, Hibernate.INTEGER); например. Имя может появляться несколько раз в строке запроса.

Если вы все еще не получите результат, попробуйте использовать два имени и установите его

EntityManager.createQuery( "SELECT a FROM a WHERE a.b =: par1 ИЛИ a.c =: par2" ). setParameter ( "par1", obj).setParameter( "par2", obj);