【发布时间】:2013-05-04 22:11:02
【问题描述】:
我有一个包含 8000 个项目的整数数组列表。
我使用 setParameterList 方法在 hql 中设置了该数组列表。
只是一个示例查询
return (Integer) sessionFactory.getCurrentSession().createQuery("update data where Id in (:list)").setParameterList("list", arrayList).executeUpdate();
但是在执行查询后我得到了这个错误。
java.lang.StackOverflowError
at org.hibernate.hql.ast.QueryTranslatorImpl$JavaConstantConverter.visit(QueryTranslatorImpl.java:585)
at org.hibernate.hql.ast.util.NodeTraverser.visitDepthFirst(NodeTraverser.java:64)
at org.hibernate.hql.ast.util.NodeTraverser.visitDepthFirst(NodeTraverser.java:65)
at org.hibernate.hql.ast.util.NodeTraverser.visitDepthFirst(NodeTraverser.java:66)
at org.hibernate.hql.ast.util.NodeTraverser.visitDepthFirst(NodeTraverser.java:66)
at org.hibernate.hql.ast.util.NodeTraverser.visitDepthFirst(NodeTraverser.java:66)
at org.hibernate.hql.ast.util.NodeTraverser.visitDepthFirst(NodeTraverser.java:66)
at org.hibernate.hql.ast.util.NodeTraverser.visitDepthFirst(NodeTraverser.java:66)
at org.hibernate.hql.ast.util.NodeTraverser.visitDepthFirst(NodeTraverser.java:66)
有什么办法可以在hibernate中解决这个问题。可能这将适用于纯 sql 查询。但我只是想知道HQL中是否有其他方法。
【问题讨论】:
-
Hibernate 的哪个版本发生了这种情况? 3.2 版本中存在一个错误,可能与该问题有关:hibernate.atlassian.net/browse/HHH-2166