我正在开发一个简单的webapp,它将域模型公开为RESTful资源.
我打算使用JPA2(Hibernate)和 SpringMVC REST支持.
我打算使用JPA2(Hibernate)和 SpringMVC REST支持.
在将Hibernate实体编组为XML / JSON时,如果实体是分离的,它将为惰性子关联抛出LazyLoadingException.如果实体仍然附加到Hibernate Session,它几乎会加载整个数据库.
我已经尝试使用Dozer CustomFieldMapper来确定该属性是否是惰性的Hibernate Collection,它未加载然后返回NULL.
但是如果我们有双向关联,Hibernate会急切地加载多对一方,Dozer会尝试复制属性,这些属性最终会导致无限循环导致StackOverflow错误.
我知道要解决这个问题的唯一工作是使用DTO并将所需的属性仅复制到干净的POJO(DTO)中,然后再编组为XML / JSON.但复杂的域模型手动复制属性是非常痛苦的.
有没有其他干净/更简单的方法(un)编组Hibernate实体?
解决方法
我在GWT应用程序中来回传递Hibernate的VO时遇到了类似的问题,并且在一些项目中使用Dozer效果很好,而在其他项目中使用了
this article中描述的方法,在编组之前基本上是空的hibernate代理.
希望能帮助你,