我正在嘗試撰寫一個具有一對多關聯的簡單應用程式。當我獲取作者時,我在 Postman 回應中多次重復資料。下面是我的物體和映射。
@Entity
public class Books extends AbstractEntity implements Serializable{
// properties
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "auther_number", referencedColumnName="auther_id")
private Author author;
// get/set goes here.
}
@Entity
public class Author extends AbstractEntity implements Serializable{
// properties for autherID, name etc.
@OneToMany(mappedBy = "author",cascade = CascadeType.ALL,orphanRemoval = true, fetch = FetchType.LAZY)
private List<Books> bookList;
// to avoid synchronization issues. in 1-M Bi-direactional
public void addBooks(Books book) {
booklist.add(book);
book.setAuther(this);
}
// to avoid synchronization issues. in 1-M Bi-direactional
public void removeBooks(Books book) {
booklist.remove(book);
book.setAuthor(null);
}
// equals and hashcode methods
}
AutherserviceImpl.java
@Override
public List<Author> getAllAuthors() {
List<Author> authorList = (list<Author>) authorRepo.findAll();
return authorList ;
}
休息控制器
@GetMapping("/api/authors")
public ResponseEntity<Object> findAllAuthors(){
return new ResponseEntity<>(autherserviceImpl.getAllAuthors(),
HttpStatus.OK);
}
以下是郵遞員的輸出。為什么會重復?我遵循了this給出的樣本。
"authorNo": 4575600302,
"balance": 4458.0,
"books": [
{
"bookID": 3522,
"price": 458.0,
"ISBN": "1234",
"author": {
"authorNo": 4575600302,
"balance": 4458.0,
"books": [
{
"bookID": 3522,
"price": 458.0,
"ISBN": "1234",
"author": {
"authorNo": 4575600302,
"balance": 4458.0,
"books": [
{
"bookID": 3522,
"price": 458.0,
"ISBN": "1234",
"author": {
"authorNo": 4575600302,
"balance": 4458.0,
"books": [
{
StackOverflow 中的一些問題建議使用 Set 而不是串列。但是當我使用 Set 時,我在 Set 和 List 之間出現轉換錯誤。不確定它在哪里準確修復鑄造錯誤。因為我沒有看到任何堆疊跟蹤,但只有在郵遞員回應中我才收到該錯誤。
如何解決此重復資料顯示問題?注意在資料庫中沒有重復的記錄。
uj5u.com熱心網友回復:
問題不是 JPA,而是 Jackson 對作者實體的序列化。你有作者和書籍之間的雙向關系,即杰克遜連載一個作者的所有書籍,當它連載一本書時,它會再次開始連載相應作者的程序。
最簡單的解決辦法是注釋欄位author的Books用@JsonIgnore。或者,你可以注釋author與@JsonManagedReference和該領域bookList的Author用@JsonBackReference。那么,反序列化回圈應該被打破。
如需詳細指南,請查看此處:https : //www.baeldung.com/jackson-bidirectional-relationships-and-infinite-recursion
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/401609.html
