[英]Spring boot + jpa, many to many association through form submission
大家好,我剛剛開始學習彈簧靴,並想知道如何通過表單提交保存多對多關系的對象?
說我們有兩個圖書和出版商實體
@Entity
public class Book{
private long id;
private String name;
private List<Publisher> publishers;
public Book() {
}
public Book(String name) {
this.name = name;
}
public Book(String name, Set<Publisher> publishers){
this.name = name;
this.publishers = publishers;
}
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "book_publisher", joinColumns = @JoinColumn(name = "book_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "publisher_id", referencedColumnName = "id"))
public List<Publisher> getPublishers() {
return publishers;
}
public void setPublishers(List<Publisher> publishers) {
this.publishers = publishers;
}
}
@Entity
public class Publisher {
private Long id;
private String name;
private List<Book> books;
public Publisher(){
}
public Publisher(String name){
this.name = name;
}
public Publisher(String name, List<Book> books){
this.name = name;
this.books = books;
}
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@ManyToMany(mappedBy = "publishers")
public List<Book> getBooks() {
return books;
}
public void setBooks(List<Book> books) {
this.books = books;
}
}
然后我們有一個圖書庫
public interface BookRepository extends CRUDRepository<Book, Long>{
}
如何在bookcontroller中看起來像crud方法?
真正的問題是“連接表”有附加數據,例如發布者出版書籍的日期,出版商書籍的ISBN等等......如果答案是肯定的,則需要另一種形式,解決您的問題,如果沒有,您從您輸入的圖書的出版商的表單列表中收到並通過圖書庫單獨添加到連接表和書籍到書籍表...從我的角度來看設計數據庫缺乏信息。 當你回答這個問題的時候,我會嘗試幫助你以春天的方式去做...當前從db的角度來看你需要現有對象的對象之間建立這種聯系。 andwise的第一個階段是Publisher
表單和Book
表單。 眾所周知,許多人都很頭疼。 我建議在問題中添加JPA
標記,並刪除spring-data
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.