java - java.lang.IllegalArgumentException:名称为 [xxx] 的参数不存在
问题描述
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
解决方案
您需要使用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);
推荐阅读
- c++ - 如何防止派生类成为 C++ 中的抽象类?
- ios - Json 快速更新
- c - 如何在 GTK3 窗口中打印仅终端命令的输出?
- php - laravel 中的未知或错误时区 ()
- java - java.lang.NoSuchMethodException : package.ClassName。
() 使用类 - mysql - 将 MySQL 数据库中的数据读入 R
- grammar - VXML 语法识别并发送每个用户句子
- docker - 当你使用 Kubernetes 时,你真的需要另一个服务发现或 Kubernetes 内部的 API 网关解决方案吗?
- data-driven-tests - CodeceptJs。有没有办法为 Feature 添加 Datatable 源?
- c - 读取具有动态整数大小的二维数组并垂直输出