我有两个实体,比如说,
@Entity
@Table(name = "products")
public class Products {
// ...
}
和
@Entity
@Table(name = "customers")
public class Customer {
// ...
}
在数据库中,我有表customers
,products
和customers_products
,分别存储有关客户,产品及其关系的数据。
具有多对多关系(客户可以添加多个产品,每个产品可以由多个客户添加)。所以我将私有属性添加到每个实体,并将它们注释为@ManyToMany
。
之后,我应该明确添加一个模仿数据库表ProductCustomer
的类products_customers
,还是一个合适的@ManyToMany
配置就足够了?如果是后者,我应该从哪个方向找到答案?
答案 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。