2012-05-03 18 views
1

有人可以解釋PersistenceUtil.isLoaded在JPA和hibernate的上下文中返回的內容。 我的印象是,它識別是否加載了該值,並且可以在不訪問數據庫的情況下訪問該值。但是最近我遇到了PesistenceUtil.isLoaded返回true的情況,而對象是HibernateProxy的一個實例,並且對它的任何訪問都會拋出一個LIE。 我將不勝感激任何評論。PersistenceUtil.isLoaded是什麼意思?

+0

事實上,它加載了一個HibernateProxy,這讓我認爲這個特定實體的加載策略可能是「懶惰的」。因此,JPA可能不知道Hibernate加載了代理來代替完整的對象。 –

回答

2

方法在PersistenceUtil中加載檢查是實體加載的。被加載的實體意味着所有渴望的屬性都從數據庫加載或由應用程序分配。在JPA 2.0規範,這是告訴與下面的話:

的實體被認爲是裝載,如果所有與 屬性FetchType.EAGER-是否顯式地指定的或由默認 - (包括 關係和其他集合值屬性)已從數據庫加載 或由應用程序分配。包含 的屬性FetchType.LAZY可能已經加載,也可能未加載。

有關詳細說明,請參閱JPA 2.0規範,3.2.9負載狀態