结果集是.next()第一次迭代时的闭合异常

时间:2013-08-12 15:22:30

标签: java exception resultset cucumber-jvm

我无法弄清楚为什么我的结果集会抛出异常.. 调试时Resultset对象不为null,但是如果(resultset.next())则无法输入if语句 我不确定我做错了什么.. 谢谢你的帮助。

顺便说一句,我正在通过黄瓜测试访问这个课程,但是在这个阶段我不认为这与问题相关..

以下是相关代码:

 input = new Object[]{nEventID, nEventID, nAccountID};
 callback = new NamedQueryStatementCallback("GET_ACTIVE_EVENT_ENTITLEMENT_DETAILS",     input, false);
 resultSet = (ResultSet)getHibernateTemplate().execute(callback);

 if (resultSet != null)
 {
outputList = new ArrayList();
if (resultSet.next()) //here is where exception gets thrown - on first iteration,     so it never enters branch
{
    do
    {
        //create object list with data
    }while (resultSet.next());
}
}

1 个答案:

答案 0 :(得分:1)

我的猜测是使用Spring 2或其中的一些专有分支。 API doc for the HibernateTemplate说:

  

允许返回结果对象,即域对象或   域对象的集合。

您的回调应该处理resultSet上的所有处理并填充域对象,然后返回域对象(在本例中为objectList)。在调用execute之前,resultSet将关闭。

回调的重点在于回调可以指定需要发生的逻辑,而执行回调的东西可以管理和清理资源。结果集特别不是可以传递的数据持有者,它们通常需要尽快使用和关闭。所以我希望一旦回调完成,框架就会关闭resultSet。