JdbcTemplate query()在不应该给出空ResultSet的情况下

时间:2015-01-06 19:35:30

标签: java hsqldb spring-jdbc jdbctemplate

我正在为一些遗留代码编写单元测试。我有这样的方法

public Map<String, List<NotificationKeyBasic>> getDueBusinessCaseList(int numberOfDays) {
        String sql = "select bh.hotelid from dbo.BUSCASEHOTELMASTER bh\n" +
                "where (select  bh.closedate - trunc(sysdate) diff from dual) = ?\n";
        return jdbcTemplate.query(sql, new ResultSetExtractor<Map<String, List<NotificationKeyBasic>>>() {
            @Override
            public Map<String, List<NotificationKeyBasic>> extractData(ResultSet rs) throws SQLException, DataAccessException {
                Map<String, List<NotificationKeyBasic>> mapStringKey = new HashMap<String, List<NotificationKeyBasic>>();
                List<NotificationKeyBasic> notificationKeys;

                while (rs.next()) {
                    //do stuff here
                }
                return mapStringKey;
            }
        }, numberOfDays);
    }
}

此方法运行时ResultSet为空。我们使用内存HSQL数据库进行测试。我有一个xml数据集文件,其中包含此内容

<dataset>
  <dbo.buscasehotelmaster closedate="2012-04-04" hotelid="44" />
</dataset>

所有测试代码都应该正常工作。我遇到的问题是,当我传入numberOfDays作为query()的参数时,ResultSet为空。但是,当我将两个日期之间的差异硬编码为-1007时,(截断(sysdate)是截至今天的1/6/2015,因此两个日期之间的差异为-1007)它起作用且ResultSet不为空。我不确定为什么会这样,并且更改现有代码不是一种选择。任何见解将不胜感激。感谢

0 个答案:

没有答案