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方面的错误吗?关于这个问题的任何建议?
感谢。
答案 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,因此您可以尝试相应地重写查询/映射(您已经找到了类似的解决方法)。