我正在使用 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
提交
取消