簡體   English   中英

一對一映射-Spring Data JPA Spring Boot

[英]One to One Mapping - Spring Data JPA Spring Boot

我需要在Spring Data JPA-Spring Boot應用程序的2個表之間建立一對一映射。 我遵循以下示例

一對一映射Spring數據示例

它運行良好,並且在第二個表(Book Detail)中也插入了記錄。 在我的應用程序中,我需要多次更新第二張表中的記錄(例如,如示例中的頁面數列)。

我正在閱讀書本對象,然后更新bookdetail字段並使用存儲庫將其保存回(擴展了CrudRepository)。

如果我這樣做10次,則bookdetail表具有同一本書的10條記錄,並且在book表中它引用該書的最新更新bookdetail記錄的鍵值。 但是我需要在bookdetail中更新相同的記錄。 Bookdetail中的一項記錄Book中的一項記錄。

//此塊可以在實際應用程序代碼流中的同一本書的同一線程中被執行n次

// book = retrieve from Book repo
            if(book.getBookDetail() == null){
                System.out.println("NO BookDetail ");
                BookDetail bookDetail = new BookDetail();
                bookDetail.set...(123)
                book.setBookDetail(bookDetail);
            }else{ 
                book.getBookDetail().set...(123)
            }
            bookRepo.save(book);

我在這里做錯了什么。

添加實體類

public class Book implements Serializable {
    private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int bookId;


@OneToOne(fetch=FetchType.LAZY ,cascade = CascadeType.MERGE)
@JoinColumn(name="detailId")
private BookDetail bookDetail;

//Other fields

//Getter & Setter

}

public class BookDetail {

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int detailId;


@Lob
private String data;

@OneToOne(mappedBy="bookDetail")
private Book book;

//Other fields

//Getter & Setter

}
bookRepo.save(book);

您確定要保存圖書實體而不要對其進行更新嗎? 而且,如果您要編輯現有的書籍詳細信息,為什么不編輯引用它的對象而不是創建一個新的對象?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM