传递多个值。获取 org.hibernate.exception.SQLGrammarException: 无法提取 ResultSet] 的根本原因
Passing multiple values. getting org.hibernate.exception.SQLGrammarException: could not extract ResultSet] with root cause
我正在从文本文件中读取查询并依赖于 UI 中的过滤器,我正在使用字符串缓冲区附加其他查询。。像上面那样传递多个 id 来获取数据
我得到的嵌套异常是 javax.persistence.PersistenceException:org.hibernate.exception.SQLGrammarException:无法提取 ResultSet] 的根本原因
java.sql.SQLSyntaxErrorException: ORA-01722: 无效数字。
我正在使用 q.setParameter,这是 Java 持久性查询。所以我得到无效数字的值之间没有 paramterList.Because 逗号。你能帮我做些什么来支持多个值并获取数据吗?
我的代码示例:
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
对象)传递给 setParameter
如下图:
List<String> idsList = new ArrayList<>();
String[] ids = model.getId().split(",");
for(String id : ids) {
idsList.add(id);
}
query.setParameterList("id", idsList);
我正在从文本文件中读取查询并依赖于 UI 中的过滤器,我正在使用字符串缓冲区附加其他查询。
我得到的嵌套异常是 javax.persistence.PersistenceException:org.hibernate.exception.SQLGrammarException:无法提取 ResultSet] 的根本原因 java.sql.SQLSyntaxErrorException: ORA-01722: 无效数字。
我正在使用 q.setParameter,这是 Java 持久性查询。所以我得到无效数字的值之间没有 paramterList.Because 逗号。你能帮我做些什么来支持多个值并获取数据吗?
我的代码示例:
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
对象)传递给 setParameter
如下图:
List<String> idsList = new ArrayList<>();
String[] ids = model.getId().split(",");
for(String id : ids) {
idsList.add(id);
}
query.setParameterList("id", idsList);