我正在使用 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 中有任何可以開箱即用的方法。
添加回答
舉報
0/150
提交
取消