java - 传递多个值。获取 org.hibernate.exception.SQLGrammarException : could not extract ResultSet] with root cause

标签 java hibernate spring-mvc persistence

我正在从文本文件中读取查询,并依赖于 UI 中的过滤器,通过字符串缓冲区,我附加了额外的查询。 Passing multiple fields like this 。像上面一样传递多个 id 来获取数据

我收到嵌套异常是 javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: 无法提取 ResultSet] 其根本原因 java.sql.SQLSyntaxErrorException:ORA-01722:无效的数字。

我正在使用 q.setParameter,它是 Java 持久性查询。所以我没有 paramterList。由于值之间有逗号,我得到了无效的数字。您能帮我做什么来支持多个值并获取数据吗?

我的代码示例:

StringBuffer q = new StringBuffer();

 q.append(queryFromPropertiesFile);

if( model.getId()!=null && ! model.getId().isEmpty())
q.append(" and emp.id IN (:id)");

Query query = entity.createNativeQuery(q.toString());

query.setParameter("id", model.getId());

最佳答案

您需要传递一个 List 对象(即,使用 , 分隔符分割字符串),然后传递该 id 列表(List object)到setParameter,如下所示:

List<String> idsList = new ArrayList<>();
String[] ids = model.getId().split(",");
for(String id : ids) {
    idsList.add(id);
}

query.setParameterList("id", idsList);

关于java - 传递多个值。获取 org.hibernate.exception.SQLGrammarException : could not extract ResultSet] with root cause,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43162107/

相关文章:

java - 计算无向图

java - 在 Hibernate 中以字符串形式返回不同的 Criteria 结果

mysql - 是什么导致 "ARJUNA012117: TransactionReaper::check timeout for TX 0:ffff0a400e22:2251d537:519c37fa:35d4 in state RUN"

java - 将模型对象从 Controller 返回到 Ajax jquery 在 Spring mvc 中不起作用

java - 请求方法 'GET' 不支持 Spring MVC

java - 在 Spring Framework 中使用 @PathVariable 时编码不正确

Java运行时类反射

java - 无法加载 JVMCI 共享库 : libcrypt. so.1: 无法打开共享对象文件: 没有这样的文件或目录

java - JButton 不显示 JPanel

java - 将实体类参数传递给 createNativeQuery 有何作用?