- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个包含 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有没有其他的方法。
最佳答案
如果您的 list
来自另一个 SQL 查询,请尝试使用 WHERRE EXISTS
。
否则,您可能必须在循环内独立更新每个元素。
IN
数以千计的项目的子句通常不能被数据库很好地处理。
关于java - setParameterList 海量数据列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16478638/
我想有效地制作我的小型 Spring 项目。所以我在 hql 中使用 IN 子句而不是使用循环。 01) setParameterList() 中的问题 To use setParameterList
我有一个包含 8000 项的整数数组列表。 然后我使用 setParameterList 方法在 hql 中设置该数组列表。 只是一个示例查询 return (Integer) sessionFact
我在 Hibernate 中有 native SQL 查询: SELECT * FROM my_table where id IN (:ids) 我想替换:ids命名参数为 List . Query
我在使用 hibernate 的 setParameterList api 时遇到了一些问题。 我正在尝试将集合传递给 SQLQuery 并执行“in”子句搜索。记录存在于数据库中并执行原始查询,我能
我正在构建一个查询,我想在其中传递一个集合作为参数: List items = new LinkedList(); //adding optional items Query query = s.ge
错误: System.Data.SqlClient.SqlException: Incorrect syntax near ',' 代码: IQuery permissionTypes; if (re
我是一名优秀的程序员,十分优秀!