【发布时间】:2017-12-02 08:05:26
【问题描述】:
我正在使用最新的 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 表由两列组成
- task_id(任务的id)
- user_id(用户的id)
当我删除一个任务(通过 DELETE 到 /task/{id})时,它的行为正确(任务从任务表中删除,关系从 task_user 表中删除)。我遇到的问题是,当我删除一个用户时,它从用户表中删除,但关系仍然存在于 task_user 表中。
我想要的:
- 删除任务,删除“task_user”中的所有对应条目和“task”中的条目;不会删除“用户”中的条目
- 删除用户,删除“task_user”中的所有对应条目和“user”中的条目;不删除“任务”中的条目
是否可以通过配置来实现?还是我需要使用外键或自定义逻辑,例如事件处理程序?
【问题讨论】:
标签: java jpa spring-data spring-data-jpa spring-data-rest