Hibernate属性获取结果为ORA-01445

时间:2015-06-24 23:39:23

标签: hibernate oracle10g

  

ORA-01445:无法从没有密钥保留表的连接视图中选择ROWID或采样

我在一个设置为热切地获取的类中有这种属性。

timestamp

然后oracle导致ORA-01445。我注意到这是因为长选择语句。当我将fetch属性更改为lazy时,没有抛出任何错误.Mouse类还具有急切获取的属性。我需要直接访问该属性,而无需再次查询。例如@ManyToOne(targetEntity = StudentImpl.class, fetch = FetchType.EAGER) @JoinColumn(name = "STUDENT_ID") private Student student; 。我使用的是oracle 10g版本 10.1.0.4.2

这是Oracle方面的错误吗?关于这个问题的任何建议?

感谢。

1 个答案:

答案 0 :(得分:0)

是的,这是bug in Oracle

  

错误4369235 ANSI连接可能因ORA-1445

而失败      

影响:产品(组件),Oracle服务器(Rdbms)

     

据信受影响的版本范围:版本< 11

     

确认受影响的版本:   9.2.0.6,   的 10.1.0.4 下,   10.2.0.1,

     

受影响的平台:通用(受影响的所有/大多数平台)

     

修正:此问题已修复   9.2.0.8(服务器补丁集),   10.1.0.5(服务器补丁集),   10.2.0.2(服务器补丁集),11g

     

症状:相关:可能发生错误ORA-1445 ANSI加入

     

描述:对于大型的ANSI连接查询,可能会发生ORA-1445   视图/子查询。

这似乎也可能因为另一个bug in Oracle而发生。确保参与查询的所有表都声明主键(唯一约束/索引不足以解决此问题)。

那么,你怎么解决这个问题?好吧,正如每个错误一样,正确的解决方案是将软件升级到修复错误的版本(这里,您应该升级数据库)。如果这不是一个选项,那么你没有太多选择,只能容纳你的代码,以避免使用错误的功能(更改你的查询,映射等)。

例如,我提供的链接中建议的一个解决方法是将连接数限制为6,因此您可以尝试相应地重写查询/映射(您已经找到了类似的解决方法)。