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

时间:2015-07-22 08:01:37

标签: java sql oracle hibernate

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

当我连接到本地oracle实例时,我得到了

  

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

异常。但是,当我连接到oracle(在服务器中)时,不会得到该异常。我正在做同样的动作和转储是一样的。所以我认为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

2 个答案:

答案 0 :(得分:5)

  

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

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

例如,

Oracle基于合并选择创建临时内联视图,因此在此临时内联视图中实现了相同的限制。因此,您需要确保子选择子查询中的列数也不会超过此1000的限制。< / p>

  

引起:org.hibernate.exception.SQLGrammarException:无法初始化集合:

以上错误表示您尝试创建的集合超出列数允许的限制,即列总数超过{{1} }。

答案 1 :(得分:1)

要避免此异常并跳过此限制的检查,您可以设置_fix_control参数, 像:

ALTER SESSION SET“_fix_control”='17376322:OFF'

ALTER SYSTEM SET“_fix_control”='17376322:OFF'

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