【发布时间】:2019-04-02 08:49:49
【问题描述】:
是否可以在不映射一对多关系的情况下设置级联?
我有两个实体:
@Entity
@Table(name = "USER")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private Long id;
...
}
和
@Entity
@Table(name = "RECORD")
public class Record {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private Long id;
@ManyToOne
@JoinColumn(name = "USER")
private User user;
...
}
如果我尝试删除一个用户并且存在该用户的任何记录,它显然会因为外键而失败。我想在删除用户之前删除所有用户的记录。 我看到两个选项:
-
将
Records 映射为User中的@OneToMany关系并设置cascade。@OneToMany(mappedBy = "user", cascade = CascadeType.REMOVE) private Set<Record> records; 在删除用户之前手动删除它们
有没有第三个选项,如何设置级联而不映射用户实体中的记录?
【问题讨论】: