传递多个值。获取org.hibernate.exception.SQLGrammarException:无法提取具有根本原因

时间:2017-04-01 21:15:00

标签: 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 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());

1 个答案:

答案 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);