首页 > 解决方案 > @ManyToMany 表之间的关系

问题描述

我有三个独立的实体dish, kitchen, restaraunt和链接表many。我的问题是,如何在我的实体类中定义这种关系?

厨房模型

@Entity
@Table(name = "kitchen")
public class Kitchen {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;
    @Column(name = "kitchen_name")
    private String name;
    @Column(name = "kitchen_photo")
    private Blob photo;
}

碟型

@Entity
@Table(name = "dish")
public class Dish {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;
    @Column(name = "dish_name")
    private String dishName;
    @Column(name = "dish_photo")
    private Blob dishPhoto;

餐厅模型

 public class Restaraunt {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private long id;
        @Column(name = "res_name")
        private String name;
        @Column(name = "res_rating")
        private double rating;
        @Column(name = "res_address")
        private String address;
        @Column(name = "res_number")
        private String number;
        @Column(name = "res_site")
        private String site;
        @Column(name = "res_price")
        private String price;
        @Column(name = "res_photo")
        private Blob photo;

链接表 多模型

@Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @Column(name = "res_id")
    private long res_id;
    @Column(name = "kitchen_id")
    private long kitchen_id;
    @Column(name = "dish_id")
    private long dish_id;
    @Column(name = "many_name")
    private String name;
    @Column(name = "many_rating")
    private double rating;
    @Column(name = "many_address")
    private String address;
    @Column(name = "namy_number")
    private String number;
    @Column(name = "many_site")
    private String site;
    @Column(name = "many_price")
    private String price;
    @Column(name = "many_photo")
    private Blob photo;
    @Column(name = "dish_name")
    private String dishName;
    @Column(name = "kitchen_name")
    private String kitchenName;
    @Column(name = "dish_photo")
    private Blob dishPhoto;
    @Column(name = "kitchen_photo")
    private Blob kitchePhoto;

我知道如何定义两个表之间的这种关系,但是对于两个以上我不确定。我需要创建表Many吗?

标签: javaspringhibernatejpa

解决方案


按照这样的理解去,一个Restaurant会有很多和一个Kitchen

您可以定义如下关系

@Entity
public class Restaraunt {

// all other fields

@OneToMany
private Set<Dish> dishes;

@OneToOne
private Kitchen kitchen;

}

您可以像上面一样从一侧进行映射,也可以从两侧定义它,即 fromDishKitchenas well - Dishto RestaurantasManyToOneKitchento RestaurantasOneToOne

我看不出有任何理由拥有这个Many模型。


推荐阅读