我有一個從外部代碼獲取JPA實體的服務。在這個服務中,我想迭代一個延遲加載的集合,該集合是該實體的一個屬性,以查看客戶端是否相對於數據庫中的當前版本添加了某些內容。如何測試延遲加載的JPA集合是否已初始化?
但是,客戶端可能從未觸摸收集,因此它尚未初始化。這導致衆所周知的
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.example.SomeEntity.
當然,如果客戶從未接觸過的收集,我的服務沒有檢查其可能發生的變化。問題是,我似乎無法找到一種方法來測試集合是否已初始化。我想我可以打電話size()
,如果它拋出LazyInitializationException
我會知道,但我試圖不依賴於這種模式。
某處有一些isInitialized()
方法嗎?
這正是我要找的,謝謝!問題是,即使我碰巧使用Hibernate,代碼應該是JPA兼容的,所以不幸的是我沒有真正能夠使用這個:( – akira 2010-12-01 10:36:38
沒有什麼標準。 – Bozho 2010-12-01 11:10:21