Проблема, вероятно, в том, что HQL интерпретирует эту часть запроса способом, который не соответствует вашим потребностям:
lower(e.email) like lower('%'+':email'+'%')")
Из спецификации HQL я знаю, что знак "+" разрешен как арифметический оператор, но я не уверен, что он разрешен при любом другом использовании.
Очевидно, что ваше утверждение «что-то значит», поскольку Hibernate не сообщает о нем как о синтаксической ошибке, но я не знаю, что это значит, поскольку мы не в арифметическом контексте. Может быть, он объединяет строку, но не заменяет заполнитель? Было бы интересно, чтобы Hibernate активировал showSQL и зарегистрировал его, или увидел скомпилированную версию объекта запроса, чтобы проанализировать его, но сейчас у меня нет времени делать это.
В любом случае, для достижения того же результата предсказуемым образом, я предлагаю вам переписать
mail like concat('%', lower(:email), '%')
что я нахожу не двусмысленным.