我有一个sql server存储过程,可以更新一个表,在java中我使用hibernate调用如下:
Session session2 = HibernateUtil.getCurrentSession();
ProcedureCall call = session2.createStoredProcedureCall("UPDATE_PERSONAL_ADDRESS");
call.registerParameter( 1, String.class, ParameterMode.IN).bindValue(staffNo);
ProcedureOutputs outputs = call.getOutputs();
do {
Output output = outputs.getCurrent(); <--NoMoreReturnsException
当调用输出时。getCurrent()抛出NoMoreReturnsException,为什么?NoMoreReturnsException在什么情况下会抛出?
堆栈跟踪的一部分是
15:16:50,897 INFO [stdout](default task-2)Hibernate:{call UPDATE_PERSONAL_ADDRESS(?)}
15:32:04,231 ERROR [stderr](default task-2)java.lang.reflect.InvocationTargetException。.......
......
15:32:04,359 ERROR [stderr](default task-2)at java.base/java.lang.Thread.run(Thread.java:835)
15:32:04,362 ERROR [stderr](default task-2)原因:org.hibernate.result.NoMoreReturnsException:成果已尽
15:32:04,362部署时出现错误[stderr](默认任务-2)。PIM.war//org.hibernate.result.internal.OutputsImpl$CurrentReturnState。buildOutput(OutputsImpl.java:196)
15:32:04,485部署时错误[stderr](默认任务-2)。PIM.war//org.hibernate.result.internal.OutputsImpl$CurrentReturnState。getOutput(OutputsImpl.java:171)
15:32:04,611部署时出现错误[stderr](默认任务-2)。PIM.war//org.hibernate.result.internal.OutputsImpl.getCurrent(OutputsImpl.java:91)
15:32:04,612部署时错误[stderr](默认任务-2)。PIM.war//com.frw.dao.CustomPersonalHome.syncPersonalAddress(CustomPersonalHome.java:102)
15:32:04,612部署时错误[stderr](默认任务-2)。PIM.war//com.frw.object.repository.PIM904.wb_BTN_38(PIM904.java:285)
15:32:04,612 ERROR [stderr](默认任务-2)。.. 73更多
1条答案
按热度按时间daolsyd01#
我猜原因是因为存储过程没有任何输出。虽然在API中,它没有提到存储过程是否没有输出。调用ProcedureOutputs。getCurrent()将抛出Exception。
API
https://docs.jboss.org/hibernate/orm/4.3/javadocs/org/hibernate/result/Outputs.html#getCurrent()
getCurrent()
检索当前Output对象。
退货:
当前Output对象。可以为空