java .lang.IllegalArgumentException: параметр с таким именем [xxx] не существует - PullRequest
1 голос
/ 11 февраля 2020

java .lang.IllegalArgumentException: параметр с таким именем [xxx] не существует

Я использую Spring-data-jpa + hibernate

String login = "AdanaKebap";
String userQuery = "select * from user where username like '%:login%'"; // not working
Query query = entityManager.createNativeQuery(userQuery);
query.setParameter("login", login);
List<Object[]> userObjects = query.getResultList();

Я бы попробовал

String userQuery = "select * from user where username like '%?%'"; // not working
query.setParameter("1", login);

String userQuery = "select * from user where username like '%?1%'"; // not working
query.setParameter("1", login);

String userQuery = "select * from user where username like ':login'"; // not working
query.setParameter("login", login);

String userQuery = "select * from user where username like :login "; // not working
query.setParameter("login", login);

String userQuery = "select * from user where username = :login "; // working, but i don't need this

1 Ответ

0 голосов
/ 11 февраля 2020

Вам необходимо использовать CONCAT, чтобы объединить % и значение, переданное в запрос, поэтому попробуйте:

String userQuery = "select * from user where username like CONCAT('%', ?1, '%')";
//...
query.setParameter(1, login); // note here you have to use the index of placeholder 

или

String userQuery = "select * from user where username like CONCAT('%', :login, '%')'";
//...
query.setParameter("login", login);
...