如何判断Hibernate实体是否为只读

时间:2011-12-07 17:50:50

标签: java hibernate persistence

我使用以下方法将实体设为只读:

Session session = (Session)entityManager.getDelegate();
session.setReadOnly( entity, makeReadOnly );

我希望能够测试这个对象及其延迟加载的子对象是否只是以编程方式进行只读,但我没有看到任何API来执行此操作。这样的API是否存在?

更新:我正在使用Hibernate 3.3.1

1 个答案:

答案 0 :(得分:2)

那是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
};