Java如何将Hibernate代理转换为真实实体对象

在Hibernate期间Session,我正在加载一些对象,由于延迟加载,其中一些对象已作为代理加载。一切正常,我不想关闭延迟加载。

但是稍后我需要通过RPC将一些对象(实际上是一个对象)发送到GWT客户端。碰巧这个具体对象是代理。所以我需要将其变成一个真实的对象。我在Hibernate中找不到类似“实现”的方法。

如何知道某些对象的类和ID,将它们从代理变为实物?

目前,我看到的唯一解决方案是从Hibernate的缓存中逐出该对象并重新加载它,但是由于许多原因,它确实很糟糕。

回答:

这是我正在使用的方法。

public static <T> T initializeAndUnproxy(T entity) {

if (entity == null) {

throw new

NullPointerException("Entity passed for initialization is null");

}

Hibernate.initialize(entity);

if (entity instanceof HibernateProxy) {

entity = (T) ((HibernateProxy) entity).getHibernateLazyInitializer()

.getImplementation();

}

return entity;

}

以上是 Java如何将Hibernate代理转换为真实实体对象 的全部内容, 来源链接: utcz.com/qa/426289.html

回到顶部