當我嘗試調用 REST 端點時,我的 Postman 有一些奇怪的行為。有一個永無止境的循環。我在 stackoverflow 上找到了一個解決方案,@JsonIgnore 注釋將刪除這個奇怪的循環(我在下面的 Book 實體中有它)但是當我嘗試在 Postman 中列出所有書籍時,我看不到這些書籍的作者。是否有更好的解決方案來顯示作者的書籍(刪除 @JsonIgnore 注釋)但也刪除那個奇怪的循環?Book.java@Entitypublic class Book { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String title; private String isbn; @ManyToMany @JsonIgnore // removed wierd loop with data @JoinTable(name = "author_book", joinColumns = @JoinColumn(name = "book_id"), inverseJoinColumns = @JoinColumn(name = "author_id")) private Set<Author> authors = new HashSet<>(); public Book() { }Author.java@Entitypublic class Author { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; private String forename; private String surname; @ManyToMany(mappedBy = "authors") private Set<Book> books = new HashSet<>(); public Author() { }BookController.java@RestControllerpublic class BookController { private BookService bookService; @Autowired public BookController(BookService bookService) { this.bookService = bookService; } // expose /books and get list of all books - GET @GetMapping("/api/books") public List<Book> getAllBooks() { return bookService.getAllBooks(); }AuthorController 與 BookController 相同。這是 Book JSON 在 Postman 中的樣子(這些書沒有作者):Postman 中的 Authors 沒問題:這是我從 Book 實體中刪除 @JsonIgnore 時的循環:
1 回答

陪伴而非守候
TA貢獻1757條經驗 獲得超8個贊
使用@JsonIgnoreProperties注解為了忽略一個字段上的子字段,那么這個注解會忽略二級字段。
Book
- > authors
-> books // this field is ignored
Author
- > books
-> authors // this field is ignored
@ManyToMany
@JsonIgnoreProperties("books")
@JoinTable(name = "author_book", joinColumns = @JoinColumn(name = "book_id"),
inverseJoinColumns = @JoinColumn(name = "author_id"))
private Set<Author> authors = new HashSet<>();
@ManyToMany(mappedBy = "authors")
@JsonIgnoreProperties("authors")
private Set<Book> books = new HashSet<>();
添加回答
舉報
0/150
提交
取消