为了账号安全,请及时绑定邮箱和手机立即绑定

hibernate中的OneToMany关系创建4个表

hibernate中的OneToMany关系创建4个表

catspeake 2022-06-15 10:41:07
我有问题。我有两个具有相同@OneToMany 关系的类。Hibernate 创建 4 个表:product、product_categorie、categorie、categorie_product。在我的情况下,我只需要 3 个表:product、categorie 和 product_categorie。这是我的类图:我用Java编写的代码:@Entitypublic class Product {    @Id    @GeneratedValue(strategy = GenerationType.IDENTITY)    private int product_id;    private String naam, omschrijving;    private double prijs;    @OneToMany(mappedBy = "product_m")    private List<Aanbieding> aanbiedingen;    @OneToMany    private List<Categorie> categories;}@Entitypublic class Categorie {    @Id    @GeneratedValue(strategy = GenerationType.IDENTITY)    private int categorie_id;    private String naam, omschrijving;    @OneToMany    private List<Product> producten;}就我而言,我需要归档以下内容:一件产品属于 1 个或多个类别一个类别包含 0 个或多个产品我在代码中做错了吗?这是我第一次使用hibernate,希望你能理解。
查看完整描述

1 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

您需要的是多对多关系,而不是单对多关系。与 JoinTable 一起映射产品和类别之间的关系。


@Entity

public class Product {

    @Id

    @GeneratedValue(strategy = GenerationType.IDENTITY)

    private int product_id;

    private String naam;

    private String omschrijving;

    private double prijs;

    @OneToMany(mappedBy = "product_m")

    private List<Aanbieding> aanbiedingen;


    @ManyToMany(cascade = { CascadeType.ALL })

    @JoinTable(

        name = "product_categories", 

        joinColumns = { @JoinColumn(name = "product_id") }, 

        inverseJoinColumns = { @JoinColumn(name = "categorie_id") }

    )

    private List<Categorie> categories;

}


@Entity

public class Categorie {

    @Id

    @GeneratedValue(strategy = GenerationType.IDENTITY)

    private int categorie_id;

    private String naam;

    private String omschrijving;


    @ManyToMany(mappedBy = "categories")

    private List<Product> producten;


}


查看完整回答
反对 回复 2022-06-15
  • 1 回答
  • 0 关注
  • 85 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信