Что касается вашего второго вопроса, в EJB QL 2.1 есть функция CONCAT
, поэтому я думаю, что должно работать следующее:
WHERE (p.name LIKE CONCAT ('%', CONCAT(? 1, '%')))
Редактировать: Выше не работает, потому что грамматика ql допускает только литеральные строки и входные параметры в выражении LIKE
,что действительно ограничивает.Можно добиться того же эффекта, используя функцию LOCATE
, подобную этой:
WHERE LOCATE(p.name, ?1) <> 0