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) 个答案