我不明白为什么我的结果集抛出异常.. 调试时Resultset对象不为null,但无法进入if语句 if(resultset.next()) 我不确定我做错了什么.. 谢谢你的帮助。
顺便说一句,我正在通过 cucumber 测试访问此类,但是在现阶段我认为这与问题无关..
相关代码如下:
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());
}
}
最佳答案
我的猜测是,这要么使用 Spring 2,要么使用它的一些专有分支。 API doc for the HibernateTemplate说:
Allows for returning a result object, that is a domain object or a collection of domain objects.
您的回调应该处理 resultSet 上的所有处理并填充域对象,然后返回域对象(在本例中为 objectList)。 resultSet 在执行调用返回之前关闭。
拥有回调的目的是让回调可以指定需要发生的逻辑,而执行回调的事物可以管理和清理资源。特别是结果集不是可以传递的数据持有者,它们通常需要尽快使用和关闭。所以我希望一旦回调完成框架就会关闭结果集。
关于java - 结果集在 .next() 第一次迭代时关闭异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18190788/