Использование спящего режима с именованным параметром дважды
Предположим, что у меня есть следующий HQL
EntityManager.createQuery("SELECT a FROM a WHERE a.b = :par OR a.c = :par").setParameter("par", obj);
похоже, не работает. У кого-нибудь есть идея, как решить эту проблему, остается только один параметр?
Ответ 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);