繁体   English   中英

如何用 hibernate 将 map 用作外键?

[英]How to map a foreign key with hibernate?

我正在使用Spring Boot ( MVC ) 和hiberbate编写在线商店。 我有一个订单 class 我需要Сart链接。 但问题是在数据库中我没有特定的Сart表,但是有一个cart _products表,其中peimary key由两列组成(如下图所示)。 我真的需要一个Order class 的连接,所以我决定在 hibernate 级别创建一个Composite Primary Key (我似乎已经做到了),但我不知道下一步该做什么。 我被卡住了? 请告诉我 go 在哪里? 我该如何解决我的问题?

订单类别:

@Entity
@Table(name = "pg_order")
public class Order {

    // Fields
    //
    private @Id
    @GeneratedValue
    Long id;

    private String address;

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

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "date_order")
    private Date dateOrder;

    @Enumerated(EnumType.STRING)
    @Column(name = "order_status")
    private OrderStatus orderStatus;

    @Column(name = "total_cost")
    private BigDecimal totalCost;

    // Relationships
    //
    @ManyToOne
    @JoinColumn(name = "user_id")
    private User user;

//    @OneToMany
//    @JoinColumn(name = "cart_products_pkey")
//    private Cart cart;
}

大车:

@Entity
@Table(name = "cart_products")
public class Cart {

    @Embeddable
    @NoArgsConstructor
    @AllArgsConstructor
    static class CartId implements Serializable {

        private Long orderId;

        private Long drinkId;
    }


    // Fields
    //
    @EmbeddedId
    private CartId cartId;

    @ManyToOne(optional = false)
    @JoinColumn(name = "order_id")
    private Order order;

    @ManyToOne(optional = false)
    @JoinColumn(name = "drink_id")
    private Drink drink;

    private int count;
}

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

如果您需要访问该订单的“饮料”。 您需要从 Order class 更改与 Cart 的关系。

您已经评论了 ORDER 只能访问一个 CART 的关系,因为您需要访问 N CARTS(一对多),您需要添加一个 SET。 像这样的东西:

@OneToMany
@JoinColumn(name = "cart_products_pkey")
private Set<Cart> cartProducts;

现在订单有一组购物车。

您可以使用order.getCartProducts()轻松访问该订单的购物车

由于 CART 有 DRINK 的密钥,因此您可以轻松访问它。

希望这可以帮到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM