亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Spring Data JPA 中嵌入對象而不是鏈接

在 Spring Data JPA 中嵌入對象而不是鏈接

POPMUISE 2023-07-28 16:33:24
我正在使用 Spring Boot 和 Spring Data JPA 創建一個簡單的 Web 商店作為大型應用程序的一部分。我有許多商品(我的庫存),訂單將包含這些商品的集合(以及運輸信息等)。庫存中的商品可能會更新 - 例如,更改價格。我希望能夠在沒有版本控制等開銷的情況下執行此操作。但是,當我查找過去的訂單時,我想獲取當時使用的信息。Spring Data JPA 中是否有一種方法可以在我的訂單中嵌入項目的副本,而不是鏈接到項目對象?我的課程如下:ShopItem.java@Entitypublic class ShopItem {  @Id  @GeneratedValue  private Long id;  private String name;  private String description;  private int price;  private int stock;  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 String getDescription() {    return description;  }  public void setDescription(String description) {    this.description = description;  }  public int getPrice() {    return price;  }  public void setPrice(int price) {    this.price = price;  }  public int getStock() {    return stock;  }  public void setStock(int stock) {    this.stock = stock;  }  public void reduceStock(int by){    this.stock = this.stock - by;  }}ShopOrder.java@Entitypublic class ShopOrder {  @Id  @GeneratedValue  private Long id;  @ManyToOne  private Member member;  private boolean postage;  @OneToMany  private List<ShopOrderItem> items;  public Long getId() {    return id;  }  public void setId(Long id) {    this.id = id;  }  public Member getMember(){    return member;  }  public void setMember(Member member) {    this.member = member;  }  public boolean getPostage() {    return postage;  }  public void setPostage(boolean postage) {    this.postage = postage;  }  public List<ShopOrderItem> getItems() {    return items;  }  public void setItems(List<ShopOrderItem> items) {    this.items = items;  }}
查看完整描述

1 回答

?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

當您使用 ORM 時,Spring Data JPA 只是讓您的生活變得更輕松的一種方法。當您使用數據庫時,ORM 只是讓您的生活更輕松的一種方法。

問題是,如果您使用的是關系數據庫,除了克隆數據之外,沒有辦法做您想做的事情。

因此,一種方法是克隆 ShopItem 實體并將其作為新條目存儲在數據庫中的專用表中。

另一種方法可能是使用 NoSQL DB,它可以更好地處理這個問題。

有多種不同的方法來存儲訂單歷史記錄,但我想不出 Spring data JPA 中有任何可以開箱即用的方法。


查看完整回答
反對 回復 2023-07-28
  • 1 回答
  • 0 關注
  • 146 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號