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

时间:2018-06-23 09:07:54

标签: 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")
    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;

     ..
 }

现在,我发现订购商品可能是ManyToOne关系,应该可以使用。 现在,我希望了解这两种选择之间的区别以及应该使用哪种选择。

我也不是100%地确定如何确定应该使用实体关系中的哪一个,例如一对一,一对多,多对一,多对多,以及该关系是单向还是双向。任何解释或建议阅读的内容都会有所帮助。

1 个答案:

答案 0 :(得分:1)

当商店只能有一个订单时,您应该一对一联系。

一对多时,一家商店可以有多个订单。 当多个订单可以属于同一家商店时,多对一只是前一个的相反。

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