有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java避免在未获取的惰性对象上进行序列化

我有一个简单的控制器,返回一个用户对象,这个用户有一个属性坐标,该属性具有hibernate属性FetchType。懒惰

当我尝试获取该用户时,我总是必须加载所有坐标才能获取用户对象,否则当Jackson尝试序列化时,用户会抛出异常:

com.fasterxml.jackson.databind.JsonMappingException: could not initialize proxy - no Session

这是因为Jackson正试图取回这个未蚀刻的对象。以下是物品:

public class User{

    @OneToMany(fetch = FetchType.LAZY, mappedBy = "user")
    @JsonManagedReference("user-coordinate")
    private List<Coordinate> coordinates;
}

public class Coordinate {

    @ManyToOne
    @JoinColumn(name = "user_id", nullable = false)
    @JsonBackReference("user-coordinate")
    private User user;
}

控制器:

@RequestMapping(value = "/user/{username}", method=RequestMethod.GET)
public @ResponseBody User getUser(@PathVariable String username) {

    User user = userService.getUser(username);

    return user;

}

有没有办法告诉Jackson不要序列化未蚀刻的对象?我一直在寻找三年前发布的关于实现jackson hibernate模块的其他答案。但也许可以通过一个新的杰克逊功能来实现

我的版本是:

  • 春季3.2.5
  • 冬眠4.1.7
  • 杰克逊2.2

提前谢谢


共 (0) 个答案