我做了一個實體只讀使用取回後:我如何判斷一個Hibernate實體是隻讀的或不
Session session = (Session)entityManager.getDelegate();
session.setReadOnly(entity, makeReadOnly);
我希望能夠測試此對象是否其實懶惰的孩子實際上是隻讀的編程,但我沒有看到任何API來做到這一點。這樣的API是否存在?
更新:我使用Hibernate 3.3.1
我做了一個實體只讀使用取回後:我如何判斷一個Hibernate實體是隻讀的或不
Session session = (Session)entityManager.getDelegate();
session.setReadOnly(entity, makeReadOnly);
我希望能夠測試此對象是否其實懶惰的孩子實際上是隻讀的編程,但我沒有看到任何API來做到這一點。這樣的API是否存在?
更新:我使用Hibernate 3.3.1
有Session.isReadOnly(Object entityOrProxy)了點。
編輯: 爲3.3.1醜陋的黑客:
//usual imports
//....
import org.hibernate.impl.SessionImpl;
import org.hibernate.engine.EntityEntry;
import org.hibernate.engine.Status;
import org.hibernate.engine.StatefulPersistenceContext;
Session session = (Session)entityManager.getDelegate();
SessionImpl sessImpl = (SessionImpl) session;
if (((StatefulPersistenceContext) sessImpl.getPersistenceContext()).getEntry(entity).getStatus() == Status.READ_ONLY) {
dosomething
};
Ahh ..在3.5中,但我們使用的是3.3.1中的那個,但我可以看看3.5實現中的代碼並使用它。謝謝.. –
@ChrisWilliams啊,好吧,不知道它是3.3.1。編輯我的答案,它包含了很多醜陋的演員。 – soulcheck
我接受後應該檢查回來!我剛剛回來發佈我的解決方案3.3.1,你打敗了我。謝謝! –
只是好奇,這是單元測試,或者你會喜歡這個活的代碼?爲什麼你需要它? – aishwarya
@aishwarya,我想驗證當父級設置爲只讀時,懶惰加載的實體是如何工作的。我還想知道,在將父項設置爲只讀之前,如果它們已經被加載(無論是否延遲),子實體的行爲如何。我基本上只需要通過一些代碼進行調試。 –