休眠中的OneToMany关系创建4个表

时间:2019-02-10 15:32:24

标签: java hibernate

我遇到了问题。我有两个类具有相同的@OneToMany关系。 Hibernate创建4个表:product,product_categorie,categorie,categorie_product。

在我的情况下,我只需要3个表:product,categorie和product_categorie。

这是我的课程图:

Class Diagram

我用Java编写的代码:

stage.on("stagemousedown", function (event) {
    console.log("mousedown");
});

stage.on("stagemouseup", function (event) {
    console.log("click");
});

就我而言,我需要归档以下内容:

一个产品属于1个或多个类别

一个类别包含0个或更多产品

我在代码中做错了吗?

这是我第一次使用休眠模式,希望您能理解。

1 个答案:

答案 0 :(得分:3)

亚当,

您需要的是ManyToMany关系,而不是OneToMany。与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;

}