Tôi có một bộ điều khiển đơn giản trả về đối tượng Người dùng, người dùng này có tọa độ thuộc tính có thuộc tính ngủ đông FetchType.LAZY.
Khi tôi cố gắng có được người dùng này, tôi luôn phải tải tất cả các tọa độ để có được đối tượng người dùng, nếu không khi Jackson cố gắng tuần tự hóa Người dùng sẽ ném ngoại lệ:
com.fasterxml.jackson.databind.JsonMappingException: không thể khởi tạo proxy - không có phiên
Điều này là do Jackson đang cố gắng lấy vật thể chưa tìm được này. Đây là các đối tượng:
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;
}
Và bộ điều khiển:
@RequestMapping(value = "/user/{username}", method=RequestMethod.GET)
public @ResponseBody User getUser(@PathVariable String username) {
User user = userService.getUser(username);
return user;
}
Có một cách để nói với Jackson để không sắp xếp các đối tượng chưa được sắp xếp? Tôi đã tìm kiếm các câu trả lời khác được đăng 3 năm trước khi triển khai jackson-hibernate-module. Nhưng có lẽ nó có thể đạt được với một tính năng jackson mới.
Các phiên bản của tôi là:
- Mùa xuân 3.2.5
- Ngủ đông 4.1.7
- Jackson 2.2
Cảm ơn trước.