7

我使用 Spring 并正在创建一个 REST 服务。

这是我的控制器的一部分:

@RequestMapping("/get")
public @ResponseBody Person getPerson() {
    Person person = personRepository.findOne(1L);
    //(1) person.setRoles(null);
    return person;
}

该人的角色是惰性初始化的,当时不需要。当 (1) 被注释掉时,一切都会失败

org.springframework.http.converter.HttpMessageNotWritableException:无法写入 JSON:无法延迟初始化角色集合:no.something.project.Person.roles,无法初始化代理 - 无会话等。

我可以通过执行 (1) 来解决这个问题,手动将其设置为 null(或其他值),因此当 Jackson 尝试序列化我的对象时它不会失败。

然而,这很烦人,必须在不同的地方多次完成。我想要一些简单的解决方案,在未初始化时忽略那些延迟初始化的字段,或者只是将它们设置为空。

注意:对象上的值上的@JsonIgnore 不是解决方案,因为在其他情况下,我希望包含这些值。

4

1 回答 1

5

检查Jackson过滤器Jackson Views(我记得两者都受 Spring 支持)。

此外,要使用惰性字段(如果不排除它们),您需要 - jackson-module-hibernate

于 2013-03-13T21:19:05.497 回答