java - hibernate中的OneToMany关系创建4个表

标签 java hibernate

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

就我而言,我只需要 3 个表:产品、类别和产品类别。

这是我的类图:

Class Diagram

我用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/

相关文章:

java - 根据数据库值动态加载 spring xml 文件

java - 我可以写入不属于我的应用程序的文件夹(data/data/com.glob.etc)-java(android)吗?

java - 在 Office 365 Starter Android 项目中使用 Exchange Webservices

java - hibernate UUID.hex 与 UUID2

java - 如何在 Spring boot 中使用 JPA 中的 Criteria?

java - Spring 启动: What is causing this TransientDataAccessResourceException?

java - 更新包含对象字段的实体

java - 如何使我的 sql 数据可用于 Junit 中的所有新事务?

java - Hibernate 4.1 错误 : Could not create DynamicParameterizedType for type: org. hibernate.type.EnumType

java - 使用 JPA 和 Hibernate 时如何避免父类(super class)查询中的多态性