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

标签 java hibernate persistence

我在使用以下方法检索实体后将其设置为只读:

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/

相关文章:

java - 当实体类有子类(可嵌入 id)时,使用 JPA Criteria API 选择查询

java - Spring Boot项目在Eclipse Debug模式下启动缓慢

ruby-on-rails - :autosave property of has_many associations broken in Rails 2. 3.4?

java - 内部异常 : java. sql.SQLException:未选择数据库

java - 从 Excel 中读取几列/行数据并获取列表

java - 常量及其单位的命名约定

java - JLabel 不会改变背景颜色

java - 如何找到两个非接口(interface)类的最近公共(public)父类(super class)

java - 在 Hibernate 中使用 Map 不起作用

java - EJB 是否需要专用服务器才能使用?