我正在从文本文件中读取查询并依赖于UI中的过滤器,使用字符串缓冲区我附加其他查询。。传递多个id如上所述以获取数据
我得到嵌套异常是javax.persistence.PersistenceException:org.hibernate.exception.SQLGrammarException:无法提取ResultSet]的根本原因 java.sql.SQLSyntaxErrorException:ORA-01722:无效的数字。
我正在使用q.setParameter,它是Java persistance Query。所以我没有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());
答案 0 :(得分:1)
您需要传递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);