我正在使用 Jax-RS 和 GSON 创建 Web 服务。现在,GSON 无法转换 HibernateProxy 对象,我有一些问题。我有一个 API,以便我可以急切加载和延迟加载。当我想进行 Eagerload 时,我使用 Hibernate.initialize(...)。然而,这似乎并不能保证一个对象是未经代理的?
那么,您将在何处、何时以及如何取消代理对象呢?当对象也可能与其他需要非代理的对象有关系时,你如何处理这个问题?
我正在使用 Jax-RS 和 GSON 创建 Web 服务。现在,GSON 无法转换 HibernateProxy 对象,我有一些问题。我有一个 API,以便我可以急切加载和延迟加载。当我想进行 Eagerload 时,我使用 Hibernate.initialize(...)。然而,这似乎并不能保证一个对象是未经代理的?
那么,您将在何处、何时以及如何取消代理对象呢?当对象也可能与其他需要非代理的对象有关系时,你如何处理这个问题?
这是一个示例代码:
public <P> List<P> unproxy(Collection<P> objects) {
Session session = sessionFactory.getCurrentSession();
List<P> result = new ArrayList<P>();
for (P t : objects) {
Object unproxied = ((SessionImplementor)session).getPersistenceContext().unproxy(t);
result.add((P) unproxied);
}
return result;
}