Java 无效操作:结果集已关闭。ERRORCODE=-4470,SQLSTATE=null
我正在使用键从表中检索特定数据。 我正在使用hibernate查询来检索数据 我能够检索特定密钥的数据。但对于其他一些键,我得到了错误或异常。我得到的例外是 [1/17/13 14:07:41:819 IST] 0000004c LongType I **org.hibernate.type.NullableType nullSafeGet could not read column value from result set: BRAND1_23_2_; [jcc][t4][10120][10898][3.58.81] Invalid operation: result set is closed. ERRORCODE=-4470, SQLSTATE=null** [1/17/13 14:07:41:822 IST] 0000004c JDBCException W org.hibernate.util.JDBCExceptionReporter logExceptions SQL Error: -4470, SQLState: null [1/17/13 14:07:41:823 IST] 0000004c JDBCException E org.hibernate.util.JDBCExceptionReporter logExceptions [jcc][t4][10120][10898][3.58.81] Invalid operation: result set is closed. ERRORCODE=-4470, SQLSTATE=null [1/17/13 14:07:41:826 IST] 0000004c DefaultLoadEv I org.hibernate.event.def.DefaultLoadEventListener onLoad Error performing load command org.hibernate.exception.GenericJDBCException: could not load an entity: [com.travelport.soa.gds.airline.brandedfares.entity.FareCollection#490] at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:126) at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:114) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) [1/17/13 14:07:41:819 IST]000000 4C LongType I**org.hibernate.type.NullableType nullSafeGet无法从结果集中读取列值:BRAND1_23_2;[jcc][t4][10120][10898][3.58.81]无效操作:结果集已关闭。ERRORCODE=-4470,SQLSTATE=null** [1/17/13 14:07:41:822 IST]0000004c JDBCException W org.hibernate.util.JDBCException Reporter logExceptions SQL错误:-4470,SQLState:null [1/17/13 14:07:41:823 IST]0000004c JDBCException E org.hibernate.util.JDBCExceptionReporter logExceptions[jcc][t4][10120][10898][3.58.81]无效操作:结果集已关闭。ERRORCODE=-4470,SQLSTATE=null [1/17/13 14:07:41:826 IST]0000004c DefaultLoadEv I org.hibernate.event.def.DefaultLoadEventListener onLoad执行load命令时出错 org.hibernate.exception.genericjdbception:无法加载实体:[com.travelport.soa.gds.airline.brandedfares.entity.FareCollection#490] 位于org.hibernate.exception.sqlstatecoverter.handlednonspecificeexception(sqlstatecoverter.java:126) 位于org.hibernate.exception.sqlstatecoverter.convert(sqlstatecoverter.java:114) 位于org.hibernate.exception.jdbceptionhelper.convert(jdbceptionhelper.java:66)Java 无效操作:结果集已关闭。ERRORCODE=-4470,SQLSTATE=null,java,hibernate,db2,websphere,Java,Hibernate,Db2,Websphere,我正在使用键从表中检索特定数据。 我正在使用hibernate查询来检索数据 我能够检索特定密钥的数据。但对于其他一些键,我得到了错误或异常。我得到的例外是 [1/17/13 14:07:41:819 IST] 0000004c LongType I **org.hibernate.type.NullableType nullSafeGet could not read column value from result set: BRAND1_23_2_; [jcc][t4][1012
您获取了一个实体,该实体具有一对多关系,在Java中表示为延迟加载的
集合
,并且在您已经关闭了获取对象的Hibernate会话之后,您正试图迭代该集合。您必须急切地获取集合,或者扩大会话边界以包含您的迭代代码。如果延迟/急切地获取策略是一个问题,您可能需要使用@OneToMany(fetch=FetchType.eager)
,也可能需要读取和
我建议您发布一些关于如何获取数据库和受影响记录的片段。您可能想使用。当在Datasource自定义属性中使用kodo set
ResultsTholdability
to 1时,我出现相同错误的原因是我关闭了db2连接,然后试图读取结果集。请强调,在读取结果集时,db2必须保持连接 DB2中SQL代码-4470有许多最终原因。以下是一个简短列表:
发布一些您正在尝试的代码,会话的结束实际上发生在哪里?无论如何,我没有明确地处理关闭/启动会话的问题。如果您使用某种声明性事务管理,那么您必须了解框架提供给您的事务范围。我想最好的选择是急切地去拿收藏品。可能是最常见的错误,因此也是(完全不必要的)急切加载的最常见原因。这一切都源于未能理解Hibernate最基本和最基本的两个概念:持久性集合和会话生命周期边界。@pap作为记录,我从未使用过延迟加载或任何其他在随机时间触发随机SQL的魔法。我为每个任务编写特定的HQL,它获取的正是我所需要的。我发现ORM和“持久状态管理”的整个想法令人厌恶,而且比它的价值还要麻烦。我仍然更喜欢HQL,因为它具有数据库中立性以及连接条件和业务逻辑条件之间的关注点分离的特性。@MarkoTopolnik我表示同情,但它回避了一个问题:如果你不打算利用Hibernate的固有优势,为什么要使用它?另外,如果您知道自己在做什么,并且您的域适合ORM,那么Hibernate真的很强大。尤其是当您可以充分利用二级缓存和延迟加载等功能时。“在随机时间触发随机SQL”只是表示您不知道Hibernate如何工作或如何正确使用它的另一种方式……是的,我将ResultsTholdability属性更改为1,因此它工作正常。但是我可以知道ResultsTholdability属性的全部内容吗??