首页 > 解决方案 > Spring:持久化一个属性列表,该列表本身具有其他属性列表

问题描述

我正在尝试为食品订单管理制作网络服务。我有一个实体产品和餐厅,我正在努力制作 Order Entity 。

@Entity
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    @ManyToOne
    @JoinColumn(name = "restaurant_id", referencedColumnName = "id",  insertable=false, updatable=false)
    @JsonBackReference
    private Restaurant restaurant;
    private int restaurant_id;
    private String name;
    private float price;
}

@Entity
public class Restaurant {
    @Id
    @GeneratedValue
    private int id;
    @NotNull
    private String name;
    private String city;
    private String phone;
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "restaurant", cascade = CascadeType.ALL)
    @JsonManagedReference
    private List<Product> menu;
}

我希望订单实体有一个列表。如果我在 Product 中保留一个属性 OrderId,以加入表 Product 和 Order,那会是个好主意吗?有没有更好的方法呢?

PS:我不想在 Product 中保留订单 ID,因为我认为 Product 不应该知道它

标签: springhibernatespring-bootjpa

解决方案


是的,这是个好主意。

您可以使用 List in Order 实体并通过在产品中具有 order id 来加入它们。

很难说出你真正想要什么,但这个网站(在标题关系下)描述了可能适用于你所有用例的最佳实践!

https://vladmihalcea.com/tutorials/hibernate/

干杯!


推荐阅读