我正在开发一个简单的 webapp,它将域模型公开为 RESTful 资源。我打算将 JPA2(Hibernate) 与 SpringMVC REST 支持一起使用。
在将 Hibernate 实体编组为 XML/JSON 时,如果实体被分离,它将为惰性子关联抛出 LazyLoadingException。如果实体仍然附加到 Hibernate Session,它将几乎加载整个数据库。
我尝试使用 Dozer CustomFieldMapper 来确定该属性是否是未加载的惰性 Hibernate 集合,然后返回 NULL。
但是,如果我们有双向关联,Hibernate 会急切地加载多对一,而 Dozer 将尝试复制属性,这些属性最终会陷入无限循环,从而导致 StackOverflow 错误。
我知道解决此问题的唯一解决方法是使用 DTO 并将所需的属性仅复制到干净的 POJO(DTO)中,然后编组为 XML/JSON。但是复杂的领域模型手动复制属性是非常痛苦的。
有没有其他更干净/更简单的方法来(取消)编组 Hibernate 实体?