冬眠期间Session
,我正在加载一些对象,其中一些由于延迟加载而作为代理加载。一切都好,我不想关闭延迟加载。
但后来我需要通过 RPC 将一些对象(实际上是一个对象)发送到 GWT 客户端。而这个具体对象恰好是一个代理。所以我需要把它变成一个真实的物体。我在 Hibernate 中找不到像“materialize”这样的方法。
如何将某些对象从代理转换为知道其类和 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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)