这可能是一个愚蠢的问题或者可能会被问到,但我没有找到哪些帮助了我。 你们中的任何人都可以告诉我ManyToMany关系中描述的这些属性是做什么的。如果有任何我错过的并且应该在ManyToMany地图中使用,请帮助我。
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "customer_service",
joinColumns = {@JoinColumn(name = "customer_id")},
inverseJoinColumns = @JoinColumn(name = "service_id"))
答案 0 :(得分:0)
这是(我猜)Customer
和Service
表之间的多对多关系的描述。从技术上讲,所有属性都是可选的,所以:
@ManyToMany
private Set<Customer> services;
Service
中的会很好(如果关系是双向的话,Customer
侧的注释类似。)
现在假设你有一些基本的关系数据库设计知识:
@JoinTable
描述了一个连接表,用于存储客户和服务之间的关系。每行包含一个对客户的引用和一个对服务的引用。此表将命名为customer_service
joinColumns
- 引用关系第二面的列的定义 - customer_id
inverseJoinColumns
- 引用回到起始端的列的定义 - 在此示例中为service_id
。
连接和反向连接列是对称的 - 如果您在另一侧定义了多对多关系,则可以切换它们。否则一切都将从Java透视图开始,但Hibernate将从customer_id
到Service
表创建一个外键,反之亦然,并相应地插入值。