Tôi đang có nhiều mối quan hệ hai chiều với nhiều thực thể của mình. Xem ví dụ dưới đây:Tham chiếu tuần hoàn trong mối quan hệ nhiều chiều đến nhiều mối quan hệ
public class Collaboration {
@JsonManagedReference("COLLABORATION_TAG")
private Set<Tag> tags;
}
public class Tag {
@JsonBackReference("COLLABORATION_TAG")
private Set<Collaboration> collaborations;
}
Khi tôi cố gắng serialize này để JSON, tôi nhận được ngoại lệ sau đây: `
"java.lang.IllegalArgumentException: Không thể xử lý được quản lý/trở lại tài liệu tham khảo 'COLLABORATION_TAG':. kiểu tham chiếu trở lại (java.util.Set) không tương thích với kiểu quản lý (foo.Collaboration)
Thực ra, tôi biết điều này có ý nghĩa vì javadoc khẳng định một cách rõ ràng bạn không thể sử dụng @JsonBackReference trên Bộ sưu tập. Câu hỏi của tôi là, tôi nên giải quyết vấn đề này như thế nào? Những gì tôi đã làm bây giờ là xóa chú thích @JsonManagedReference ở phía bên mẹ và thêm @JsonIgnore vào bên con. Ai đó có thể cho tôi biết những tác dụng phụ của phương pháp này là gì? Có bất kỳ lời đề nghị khác?
Bạn có thể sử dụng Jackson 2.0. Xem http://stackoverflow.com/questions/10065002/jackson-serialization-of-entities-with-birectional-relationships-avoiding-cyc –
Chú thích 'JsonIdentityInfo' là đáng yêu, cảm ơn @EugeneRetunsky! Tôi thấy trang này rất hữu ích để tìm hiểu cách hoạt động: http://wiki.fasterxml.com/JacksonFeatureObjectIdentity –
Tôi đã thử 'JsonManagedReference' và' JsonBackReference' không có công cụ nào trong số đó hoạt động. Nhưng, liên kết được đưa ra của @ SimonAndréForsberg rất thú vị và hoạt động. – yas