当前位置: 首页 > 面试题库 >

引起原因:java.sql.SQLException:ORA-01795:列表中的最大表达式数为1000?

寇甫
2023-03-14
问题内容

我正在使用java / hibernate / Oracle。我有一个超过3000个条目的列表。如果我通过整个列表,我将获得以下例外。

引起原因:java.sql.SQLException:ORA-01795:列表中的最大表达式数为1000

为了解决此问题,我将列表分为多个子列表,每个子列表将有1000个条目。对于每千个条目,我都会触发一个查询。它工作正常。

请澄清一下,有没有更好的解决方案?

谢谢!


问题答案:

这是一个Oracle的限制,这就是为什么它有一个Oracle错误代码的原因……尽管您可能会说它不能透明地解决它是Hibernate的一个限制:)

假设Oracle没有像SQL Server的表值html" target="_blank">参数那样的东西,您可能应该将列表放入临时表并加入该表。(或者您可以将查询分解为多个查询,potentailly –这取决于您在做什么。)



 类似资料:
  • 问题内容: 我将字符串列表传递给我的查询(编写的SQL查询)以获取所需的数据。但是我得到了这个例外: ora-01795列表中的最大表达式数为1000 我检查了传递给查询IN参数的列表中是否有1000多个条目。 问题答案: 这是查询中列表传递次数的一个Oracle限制。 您将不得不砍掉您的查询或 而是在IN子句中提供子查询/联接。

  • 问题内容: 下面我正在创建表。 当我尝试更新数据库表时,这是下面的UPSERT_SQL查询,我总是在 获取java.sql.SQLException:ORA-00936:缺少表达式 。我检查了我的SQL,找不到找不到表达式的地方。下面的SQL有问题吗? 从下面开始,我执行该UPSERT_SQL语句。 问题答案: 是的,SQL有点问题,这是您在 FROM dual 之前写了一个逗号。这导致Oracl

  • 本文向大家介绍Java 8 引入lambda表达式的原因解析,包括了Java 8 引入lambda表达式的原因解析的使用技巧和注意事项,需要的朋友参考一下 在Java8出现之前,如果你想传递一段代码到另一个方法里是很不方便的。你几乎不可能将代码块到处传递,因为Java是一个面向对象的语言,因此你要构建一个属于某个类的对象,由它的某个方法来放置你想传递的代码块。 下面看两个非常典型的例子,构造线程与

  • 问题内容: 我已经看过很多次这样的代码: 人们为什么选择父类(和其他类)而不是生成的对象的类型? 这会降低性能吗?还是为什么有人要这样做? 问题答案: 当某人这样编写代码时,他/她正在尝试遵循基本的OO设计原则,即- 编写接口程序,而不是具体实现 我已经在我的一篇博客文章中解释了这一原理。在该部分中查找。 总而言之,当您使用父类型的引用来引用子类型的实例时,您将获得很大的灵活性。例如,如果将来需要

  • 我不确定这是否可以使用正则表达式。我会尝试使用正则表达式,但如果不可能,我会切换到双重验证。 我的数据库(postgresql)接受为15,6(最多15位,最多6位小数),因此如果我有10位整数,我可以有5位小数。小数分隔符被忽略。 我目前有一个正则表达式(逗号是小数分隔符): 它不验证总长度,只验证左侧的数字。但由于用户也可以键入点(千位分隔符),我有一个怪物:

  • 问题内容: 每当我尝试将列表设置为IN表达式中使用的参数时,都会收到非法参数异常。互联网上的各种帖子似乎都表明这是可能的,但对我来说肯定不起作用。我正在使用带有Toplink的Glassfish V2.1。 有没有其他人能够使它正常工作,如果可以的话? 这是一些示例代码: 以及堆栈跟踪的相关部分: 问题答案: 您的JPQL无效,请删除括号