[英]One to One Mapping - Spring Data JPA Spring Boot
我需要在Spring Data JPA-Spring Boot應用程序的2個表之間建立一對一映射。 我遵循以下示例
它運行良好,並且在第二個表(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.