我们正在将Hibernate与IBM DB2 9.7一起使用。数据库给出了关于Hibernate生成的选择语句列表过大的错误(包括很多连接)。错误代码是840.可以做些什么来解决这个问题吗?我知道生成的选择列表很长,但是可以将Hibernate设置为将其拆分成部分还是什么?
编辑:我重新打开了这个,因为问题似乎有点大了。因此,在https://hibernate.onjira.com/browse/ANN-140处存在JIRA问题(现已被拒绝)。
所以问题在于使用Hibernate Annotations,不可能使用Join策略添加discriminator。但是,XML配置支持这一点。
Pavel在上面的链接讨论中很好地说明了这个问题:
"It would be nice to see how the problem with the multiple joins is faced when the
underlying DB has restriction on the number of joins one can execute in a single SQL?
For instance MySQL seems to allow only 31 joins. What happens if the class hierarchy
has more than 31 sub-classes?"
上面是我遇到的问题。我们正在使用注释,子类很多,创建了大量的连接,破坏了DB2语句。
对此有何评论?我也找不到直接的解决方案。
答案 0 :(得分:3)
Hibernate几乎没有提取策略来优化Hibernate生成的select语句,因此它可以尽可能高效。提取策略在映射关系中声明,以定义Hibernate如何获取其相关集合和实体。
获取策略 有四种提取策略
有关详细说明,您可以查看Hibernate documentation。