在hql ORA-01795中获取异常:列表中的最大表达式数为1000

时间:2016-10-15 20:11:53

标签: java hibernate spring-mvc

嗨我从db获取数据但是我得到了这个例外:

ora-01795列表中的最大表达式数为1000 我检查了我在传递给查询IN参数的列表中有超过2000个条目。我的代码如下所示

  String id ="";
        sqlQueryBuff = sqlQueryBuff.append("t.id IN (");
        for (Iterator iterator = resultList.iterator(); iterator.hasNext(); ) {
             id = (String) iterator.next();

            if (iterator.hasNext())
                sqlQueryBuff.append(" '" + id + "' , ");
            else
                sqlQueryBuff.append(" '" + id + "' ) ");
        }
 query = session.createQuery(sqlQueryBuff.toString());
        List list =query.list();
    return list;

我该如何解决这个问题 感谢

1 个答案:

答案 0 :(得分:0)

糟糕的方法是将ID列表最多分成999个条目,并在这一串中得到结果。

更好的方法是使用PreparedStatement及其addBatch() executeBatch()方法。