我遇到了问题。我有两个具有相同 @OneToMany 关系的类。 Hibernate 创建 4 个表:product、product_categorie、categorie、categorie_product。
就我而言,我只需要 3 个表:产品、类别和产品类别。
这是我的类图:
我用Java编写的代码:
@Entity
public 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;
}
@Entity
public class Categorie {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int categorie_id;
private String naam, omschrijving;
@OneToMany
private List<Product> producten;
}
就我而言,我需要实现以下目标:
一件产品属于 1 个或多个类别
一个类别包含 0 个或多个产品
我在代码中做错了什么吗?
这是我第一次使用hibernate,希望你理解。
最佳答案
亚当,
您需要的是多对多关系,而不是一对多关系。与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;
}
关于java - hibernate中的OneToMany关系创建4个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54617975/