我有一个问题。我有两个类具有相同的@OneToMany关系。 Hibernate创建4个表:product,product_categorie,categorie,categorie_product。
就我而言,我只需要3个表:product,categorie和product_categorie。
这是我的类图:
我用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个或更多产品
我在代码中做错了吗?
这是我第一次使用休眠模式,希望您能理解。
最佳答案
亚当,
您需要的是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;
}