2010-03-10 82 views
3

我们正在使用休眠,Postgres的8.3倍休眠 - Postgres-目标列表中最多只能有1664项

我们的实体是多对一与预先抓取映射。 我们有多对多关联,多对一映射。

当我们添加新的列到任何其他现有的实体, 我们正在以下错误:

目标列表中最多只能有1664项

我搜索互联网,他们说这是由于 更多数量的SQL查询select语句(由Hibernate生成)

的你能任何机构,请让我们知道,如果有任何配置(从Postgres) 更新最大列数我n配置或任何其他解决方案来解决此问题。

预先感谢您。

+1

试图说服我,需要这么多的列。即使加入,每桌应该至少有400-500列? – Bozho 2010-03-10 17:19:39

回答

1

尝试

 <property name="hibernate.max_fetch_depth" value="25"/> 
+0

https://forums.hibernate.org/viewtopic.php?p=2201965&sid=854c31535f1f18df45608641421f469c – Martin 2011-04-19 06:09:27

+0

对不起马丁。这是不正确的。如果我们增加最大读取深度,则更多数量的列将包含在读取列表中,并且会引发错误。 – 2011-06-07 23:21:59

0

这是PostgreSQL中的最大列数,这是正确的。但为什么你需要更多的专栏?只要做一些正常化,你的问题就消失了。或者完全不使用关系数据库,当您不规范化时,您总会遇到最大列数。

+0

谢谢Frank Heikens。 这不是关于单个数据库表中的列数。但是当我们加入多个列时(通过hibernate中的createCriteria),我们得到这个错误。 – 2010-03-10 15:53:23

+0

嗯,我明白了,现在我明白了。在那里帮不了你,我们从来没有遇到过这个问题,在我们的查询中从来没有太多的专栏。 – 2010-03-10 16:54:21

1

肯定有东西错误与您的模型/映射/查询。解决这个问题的正确方法是处理模型/映射/查询,而不是PostgreSQL中的最大列数(我甚至不知道如何达到它,查询1664 +列的查询不会产生任何结果感)。

+0

错误说的是条目,而不是列。你可以用一个非常大的WHERE ID IN VALUES(?,?,...)查询来完成。 (...) – Amalgovinus 2017-11-06 18:38:46

0

有时,当有项目太多@ManyToOne(取= FetchType.EAGER)这一点。 所以,当没有必要的FetchType.EAGER,把@ManyToOne(fetch = FetchType.LAZY)

这帮助我,试试吧!