Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ORA-01792:表或视图中的最大列数为1000_Java_Sql_Oracle_Hibernate - Fatal编程技术网

Java ORA-01792:表或视图中的最大列数为1000

Java ORA-01792:表或视图中的最大列数为1000,java,sql,oracle,hibernate,Java,Sql,Oracle,Hibernate,我有使用Oracle db的java web应用程序。 Web应用程序使用hibernate。 我有两个oracle实例——第一个在服务器上,第二个在本地虚拟linux机上 当我在某个点连接到本地oracle实例时 ORA-01792:表或视图中的最大列数为1000 例外。但当我连接到oracle(位于服务器中)时,并没有出现这种异常。我正在做完全相同的动作,转储也是一样的。所以我认为甲骨文的问题。 也许有些配置不同 有人能告诉我oracle服务器之间的差异是什么导致了这种情况吗 更新。stac

我有使用Oracle db的java web应用程序。 Web应用程序使用hibernate。 我有两个oracle实例——第一个在服务器上,第二个在本地虚拟linux机上

当我在某个点连接到本地oracle实例时

ORA-01792:表或视图中的最大列数为1000

例外。但当我连接到oracle(位于服务器中)时,并没有出现这种异常。我正在做完全相同的动作,转储也是一样的。所以我认为甲骨文的问题。 也许有些配置不同

有人能告诉我oracle服务器之间的差异是什么导致了这种情况吗

更新。stacktrace的某些部分

Caused by: org.hibernate.exception.SQLGrammarException: could not initialize a collection:
Caused by: java.sql.SQLSyntaxErrorException: ORA-01792: maximum number of columns in a table or view is 1000
ORA-01792:表或视图中的最大列数为1000

此限制不仅适用于视图,还适用于Oracle在执行子查询时创建的临时内联视图和临时内部内存表

比如说,

Oracle基于合并选择创建临时内联视图,因此对该临时内联视图实施相同的限制。因此,您需要确保子选择子查询中的列数也不超过
1000的限制

原因:org.hibernate.exception.sqlgrammareexception:无法初始化集合:


上述错误表示您正试图创建一个集合,该集合超出了允许的列数限制,即总列数超过
1000
要避免此异常并跳过此限制的检查,您可以设置一个_fix\u控制参数, 比如:

更改会话集“\u fix\u control”='17376322:OFF'

更改系统设置“\u修复\u控制”='17376322:OFF'


(适用于Oracle 12.1.0.2标准和企业版)

当您将Oracle连接到第二台机器时,问题就开始了?@Moudiz No当我在web应用程序中执行某些特定操作时。查看哪种查询(HQL和生成的SQL)会很有趣真正生成此问题可能您的应用程序正在基于数据动态生成SQL,因此,当两个环境中的数据不相同时,生成的SQL很可能不同。我几乎可以肯定数据也相同。(但感谢您的评论,我将再次检查。代码完全相同,当我连接到服务器上的oracle时,我没有得到expetion。@user1321466应用程序可能正在基于数据生成数据库对象,因此在您的两个环境中,数据可能不相同。