jpa 定义中间表实体_JPA多对多级联删除中间表
时间: 2023-07-27 07:11:06 浏览: 171
Spring Data JPA 实现多表关联查询的示例代码
在 JPA 中,多对多关系需要使用中间表(也称为连接表、联结表)来维护关联关系。中间表通常不包含业务数据,只包含两个关联实体的外键,用于建立关联关系。
定义中间表实体需要使用 @Entity 注解来标记该类是一个实体类,同时使用 @Table 注解指定中间表的表名。中间表实体需要包含两个外键字段,分别关联两个关联实体:
```java
@Entity
@Table(name = "user_role")
public class UserRole {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne
@JoinColumn(name = "user_id")
private User user;
@ManyToOne
@JoinColumn(name = "role_id")
private Role role;
// 省略 getter 和 setter 方法
}
```
在多对多关系中,删除一个实体时,需要同时删除中间表中对应的记录。JPA 提供了级联删除(CascadeType.REMOVE)来处理这种情况。在关联实体的 @ManyToMany 注解中,使用 cascade 属性指定级联操作:
```java
@ManyToMany(cascade = CascadeType.REMOVE)
private List<Role> roles;
```
这样,当删除一个用户时,JPA 会自动删除 user_role 表中对应的记录。
阅读全文