【问题标题】:oracle and hibernate cacheoracle 和休眠缓存
【发布时间】:2017-01-16 09:51:48
【问题描述】:

我正在解决我们公司应用程序中的一个错误。该应用程序可以连接到 oracle、sqlServer 和 mysql。当我连接到oracle时,我从oracle中的某些表中删除了所有数据,我仍然可以从oracle中的throse表中查询数据。首先,我认为这是因为hibernate缓存,但是当我连接到sqlserver或mysql时也是这样,我发现数据被删除了。我整天都在处理这个问题。这对我来说真的很难,我必须在接下来的两天内解决这个问题,如果有人可以帮助我,我会的非常感谢!

以下是一些图片和代码: 这些是我用来从数据库中查询数据的代码。

 long num = dataService.getAllSum(bean.getDbName(), bean.getTableName());
 bean.setIsTableExist(true);
 bean.setHasData(num > 0 ? true : false);

这里是函数“getAllSum”的源代码:

@Override
public Long getAllSum(String dbName, String tableName) {
    return (long) this.getJdbcTemplate(dbName).queryForInt("select count(ID) from " + tableName);
}

当我使用sqlserver时,我从表“NQ_AbbrNMChange”中删除了所有数据,当我在这里调试时,num是0,这是对的。但是当我使用oracle时,做同样的事情,结果是错误的,num不为0,好像数据没有被删除,但我发现在oracle中确实被删除了。

【问题讨论】:

  • 您可能连接到错误的数据库实例?
  • 在 oracle 中事务必须手动提交。您是否检查过您是否提交了您在其中进行删除的事务?
  • @sstan:查了很多遍,数据库是对的。
  • @steelshark:首先,我删除了表NQ_AbbrNMChange中的所有数据并提交,然后我调试它,num不是0,但是在oracle中,使用查询sql,我找到了num id 为 0。

标签: java sql-server oracle hibernate


【解决方案1】:

我已经解决了问题,是因为我没有提交。我总是在cmd而不是sql developer中删除oracle中的数据。但实际上,数据只是在视图级别删除,它们可以真正删除,直到你提交了。至于sqlserver,我删除了sqlserver管理工作室中的数据,可以执行autocommit。无论如何,谢谢大家!

【讨论】:

  • 这正是我在第一条评论中所说的......“在 oracle 中事务必须手动提交。您是否检查过您是否提交了执行删除操作的事务?”
猜你喜欢
  • 2011-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-13
  • 2012-04-29
  • 2015-01-05
  • 2011-11-18
  • 2011-06-18
相关资源
最近更新 更多