的Tomcat:5.5
甲骨文:11G(11.1.0.7.4)
JDK 1.6
休眠:3.0.5得到不正确的结果从休眠 ORACLE
上下文
我们正在使用Hibernate获取视图的rowcount。 该视图的写入方式总是至少有一行。 在数据库中,视图有足够的行可以返回8行。
问题
在一段时间后,我们得到算作ZERO
如果我们再试一次(即用户刷新屏幕)的8计数正确返回。
调查
我们试图一堆东西排除以下
1)Oracle服务器返回一个坏的结果
2)检查以确保它是好即会返回正确的结果
现在这种怀疑他转身对Hibernate的
的代码片段
你能在下面的代码中发现任何可疑的东西吗?
public static int getRowCount(Criteria criteria)
{
int totalRows = 0;
criteria.setProjection(Projections.rowCount());
Integer count = (Integer) criteria.uniqueResult();
if (count != null)
totalRows = count.intValue();
criteria.setProjection(null);
criteria.setResultTransformer(Criteria.ROOT_ENTITY);
return totalRows;
}
我们也验证了计数为零,而不是空
奇怪的,因为它可能声音,有发表的地方返回不正确的结果,而且这个错误开始时,我们采用一个Oracle烫发生甲骨文缺陷。
问题
有没有人认为Oracle有可能返回不正确的结果?
如何解决这个任何建议将和赞赏...
总结一些关键事实
的 - 开始发生,当我们升级的Oracle11g从11.1.0.6.1到11.1。同时。 0.7.4,并做了一些热修复。
- 这是在此期间生态系统发生的唯一变化 - 对Oracle
的更改 - 发生这种情况的方式不一致。现在你看到了问题 - 现在你不知道。
- 偶尔发生。但严重到足以导致警报。
启用hibernate.show_sql来验证hibernate是否发送正确的SQL查询 – iliaden