私はJPAを使用していて、多対多の関係を理解したいと思っていました。私は "店"と "顧客"を持っているとしましょう。これらには多対多の関係があります。JPA ManyToMany:既存のオブジェクトを別のオブジェクトに追加する
私の理解では、Storeは多くの顧客を持つことができ、顧客は多くの店舗と関連付けることができます。だから私がやりたかったのは、2店舗と複数の顧客を作ることでした。しかし、同じ顧客をStore 1とStore 2の一部にしたかったのですが、Store 1を顧客と一緒に保存してから、同じ顧客を連れてStore 2に関連付けました。 )、私はこのエラーメッセージが表示されます。
これを解決する方法がわかりません。どんな助けやコメントも感謝しています。前もって感謝します!
}
@Entity
public class Item {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
private BigDecimal price;
public Item() { }
public Item(String name, BigDecimal price) {
this.name = name;
this.price = price;
}
public Item() {
}
public Item(String name, BigDecimal price) {
this.name = name;
this.price = price;
}
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;
}
public BigDecimal getPrice() {
return price;
}
public void setPrice(BigDecimal price) {
this.price = price;
}
}
これは春ブート使用ドライバコードである: ストアセーフウェイ=新しいストア( "Safeway4を");
safeway.addItem(new Item("Fuji Apple", new BigDecimal(1)));
safeway.addItem(new Item("Black Grapes", new BigDecimal(2)));
safeway.addItem(new Item("Cheese Pizza", new BigDecimal(10)));
Store bestBuy = new Store("Best Buy4");
bestBuy.addItem(new Item("55 inch TV", new BigDecimal(550)));
bestBuy.addItem(new Item("Bluray Player", new BigDecimal(85)));
bestBuy.addItem(new Item("Nikon SLR", new BigDecimal(1500)));
Customer elf = new Customer();
elf.setName("Elf");
Customer neo = new Customer();
neo.setName("Neo");
safeway.getCustomers().add(elf);
safeway.getCustomers().add(neo);
Customer yoda = new Customer();
yoda.setName("Yoda");
Customer crazy = new Customer();
crazy.setName("Crazy");
bestBuy.getCustomers().add(yoda);
bestBuy.getCustomers().add(crazy);
log.debug("adding neo to best buy");
bestBuy.getCustomers().add(neo); // Adding Neo to both stores!
log.debug("saving safeway 1");
storeRepository.save(safeway);
log.debug("saving safeway 1 done");
log.debug("saving bestBuy 1");
storeRepository.save(bestBuy); // error happens here <-----------
log.debug("saving bestBuy 1 done");
ありがとうNaros!あなたの答えは問題を解決しました。 – Daniel