【问题标题】:Spring JdbcTemplate returns empty result when there should be a valid result当应该有有效结果时,Spring JdbcTemplate 返回空结果
【发布时间】:2009-12-06 08:02:29
【问题描述】:

我正在使用 SimpleJdbcDaoSupport 对象来访问数据库资源。我有一个经常对数据库执行的查询,以查找具有特定键的记录。出于某种原因,在多次执行相同的查询后,即使数据库中存在记录,我也开始得到一个空结果。

有什么想法会导致这种行为吗?

daoSupport.getJdbcTemplate().query(this.getConsumerTokenQueryStatement(),params, this.rowMapper); 
 public static class TokenServicesRowMapper implements RowMapper {  
   public Object mapRow(ResultSet rs, int rowNum) throws SQLException { 
     DefaultLobHandler lobHandler = new DefaultLobHandler(); 
     return lobHandler.getBlobAsBytes(rs, 1); 
   } 
}

【问题讨论】:

  • daoSupport.getJdbcTemplate().query(this.getConsumerTokenQueryStatement(),params, this.rowMapper);公共静态类 TokenServicesRowMapper 实现 RowMapper { public Object mapRow(ResultSet rs, int rowNum) throws SQLException { DefaultLobHandler lobHandler = new DefaultLobHandler();返回 lobHandler.getBlobAsBytes(rs, 1); } }
  • 您的代码缺少重要部分——例如this.getComsumerQueryStatement() 返回的内容,以及您的ResultSet 中的内容。

标签: spring jdbc jdbctemplate


【解决方案1】:

如果这与您的代码无关,一个原因可能是另一个事务正在对您搜索的行执行某些操作(如更新),并且由于在事务之间进行了隔离,您看不到您的行。一个事务可以更改但尚未提交您的行,而同时另一个事务正在搜索它,但由于它只能看到已提交的行,因此看不到您的行。

【讨论】:

    猜你喜欢
    • 2019-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    • 2018-06-26
    • 1970-01-01
    • 2014-06-04
    相关资源
    最近更新 更多