Java 如何决定JPA中应使用哪种实体关系

Java 如何决定JPA中应使用哪种实体关系,java,hibernate,jpa,Java,Hibernate,Jpa,我有两个实体类,分别是Order和Shop。一张订单应该属于一家店铺,而且许多订单也可以属于一家店铺。 我现有的映射是从Order到Shop类的一对一单向映射,它正在工作 @Entity @Table(name = "order") public class Order implements Serializable { @Id @Column(name = "id") private Long id; @Column(name = "orderno")

我有两个实体类,分别是Order和Shop。一张订单应该属于一家店铺,而且许多订单也可以属于一家店铺。 我现有的映射是从Order到Shop类的一对一单向映射,它正在工作

@Entity
@Table(name = "order")
public class Order implements Serializable {

    @Id
    @Column(name = "id")
    private Long id;

    @Column(name = "orderno")
    private Long orderNumber;

    @OneToOne
    @JoinColumn(name = "shopid")
    private Shop shop;

    ..
}   
@Entity
@Table(name = "shop")
public class Shop implements Serializable {

     @Id
     @Column(name = "id")
     private Long id;

     @Column(name = "key")
     private String key;

     @Column(name = "name")
     private String name;

     ..
 }
现在我发现订单购物可能是一种多人关系,应该是有效的。 现在我想知道这两个方案有什么不同,应该使用哪一个


此外,我也不是100%确定如何决定实体关系中的哪一个应该像一对一、一对多、多对一、多对多那样使用,以及关系应该是单向的还是双向的。任何解释或建议阅读都会有帮助。

当商店只能有一个订单时,你应该选择一对一关系

一对多,一个商店可以有多个订单。 当多个订单可以属于同一家店铺时,多对一只是上一个订单的倒数

多对多是指一个商店可以有多个订单,而这些订单可以同时属于不同的商店