我正在使用最新的Spring Data REST(带JPA和MySQL DB)项目。我有两个对象,我想建立一个关系。但是当我删除其中一个时,我只想删除关系和收到删除请求的对象(不是两个对象)。
我与之相关:
其中任务可以与多个用户("拥有")多个用户相关联("拥有")多个任务
任务类:
@ManyToMany
@JoinTable(name = "task_user", joinColumns = @JoinColumn(name = "task_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"))
private Set<User> users;
用户类:
@ManyToMany(mappedBy = "users")
private Set<Task> tasks;
task_user表包含两列
当我删除任务时(通过DELETE到/ task / {id}),它的行为正常(任务从任务表中删除,关系从task_user表中删除)。我遇到的问题是,当我删除用户时,它会从用户表中删除,但该关系仍然存在于task_user表中。
我想要的是什么:
是否可以通过配置实现这一目标?或者我是否需要使用外键或自定义逻辑,例如事件处理程序?
答案 0 :(得分:1)
试试这个:
public class User {
//...
@ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
private Set<Task> tasks;
//...
}
public class Task {
//...
@ManyToMany(mappedBy = "tasks")
private Set<User> users;
//...
}
您选择了多对多的双向变体,所以不要忘记User类中的'辅助方法'。请参阅文档:associations many-to-many。
答案 1 :(得分:0)