是否可以将两个实体绑定为ManyToMany而无需额外的类?

时间:2015-06-09 04:20:52

标签: java hibernate many-to-many

我有两个实体,比如说,

@Entity
@Table(name = "products")
public class Products {
    // ...
}

@Entity
@Table(name = "customers")
public class Customer {
    // ...
}

在数据库中,我有表customersproductscustomers_products,分别存储有关客户,产品及其关系的数据。

具有多对多关系(客户可以添加多个产品,每个产品可以由多个客户添加)。所以我将私有属性添加到每个实体,并将它们注释为@ManyToMany

之后,我应该明确添加一个模仿数据库表ProductCustomer的类products_customers,还是一个合适的@ManyToMany配置就足够了?如果是后者,我应该从哪个方向找到答案?

1 个答案:

答案 0 :(得分:1)

Java中的ManyToMany关系是源对象具有存储目标对象集合的属性的位置,并且(如果)这些目标对象具有返回源对象的inverse关系,它也会是ManyToMany关系。 Java和JPA中的所有关系都是单向的,因为如果源对象引用目标对象,则无法保证目标对象也与源对象有关系。这与关系数据库不同,关系数据库通过foreign keys定义关系并查询inverse查询始终存在。

通常,创建join table以连接两个主表以进行关联。

通常join table只有两个字段(entity_A_id and entity_B_id),它们引用主表组和用户中的两个primary keys。这两个字段也称为composite primary key

  

在此之前,进行两个班级绝对没问题,不需要   创建和管理第三个联合课程。

现在,假设您希望modify the Joint Table,意味着在其中输入更多字段等。您需要创建第3个类,表名与联合表名相同。

代表ref