2013-01-17 103 views
2

我正在使用密鑰從表中檢索某些數據。 我正在使用hibernate查詢來檢索數據。操作無效:結果集關閉。 ERRORCODE = -4470,SQLSTATE = null

我能夠檢索特定鍵的數據。但對於其他一些鍵我收到錯誤或例外。我得到的例外是

 
[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

後一些代碼,通過它你想這 – TheWhiteRabbit

回答

2

您獲取的是有在Java中表示爲一個一對多關係的實體延遲加載Collection和您正試圖遍歷該集合您已經關閉後Hibernate會話,您已經在其中獲取對象。您必須急切地獲取集合或擴大會話邊界以包含迭代代碼。

+0

實際上這個會議的閉幕發生在哪裏?無論如何,我不處理顯式關閉/啓動會話.. ?? – saagaravk

+0

如果您使用某種聲明式事務管理,則必須瞭解框架爲您提供的事務範圍。我想最好的選擇將是熱切地收集集合。 –

+0

確實。可能是最常發生的錯誤,因此是(完全不必要的)急切加載的最常見原因。而這一切都源於未能理解Hibernate最基本和最基本的兩個概念:持久集合和會話生命週期邊界。 – pap

1

使用時,科多獸在數據源的自定義屬性設置resultSetHoldability

0

,我得到了同樣的錯誤,是因爲我關閉了DB2連接,然後試圖讀取結果集的原因。請強調,在讀取結果集時,db2必須保持連接狀態。

+0

是的,我改變了resultSetHoldability屬性爲1,所以它工作正常。但是,我可以知道什麼是關於resultSetHoldability屬性? – saagaravk

1

DB2中有很多SQL代碼-4470的最終原因。這裏是一個簡短的清單:

  1. 程序錯誤(如在這種情況下),關閉遊標之前已經 得到了充分的閱讀。
  2. 錯誤在已安裝的JDBC驅動程序: https://issues.jboss.org/browse/JBPAPP-2408
  3. 使用不當司機由於不正確的文件: http://www-01.ibm.com/support/docview.wss?uid=swg1IV45140
  4. 錯誤在DB2服務器: https://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.5.0/com.ibm.db2.luw.admin.trb.doc/doc/c0020806.html
相關問題