我在使用以下方法检索实体后将其设置为只读:
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
};
关于java - 如何判断 Hibernate 实体是否为只读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8420054/