当前位置: 首页 > 知识库问答 >
问题:

JPA Spring boot在删除时删除参考?

洪伟彦
2023-03-14

Im使用JPA、MySQL和Spring boot

我一辈子都搞不清楚如何应用级联,文档似乎没有应用我的意图:

例如。https://hellokoding.com/deleting-data-with-jpa-hibernate/使用CascadeType。ALL或CascadeType。删除父实体时,删除子实体的REMOVE属性。它们可以在@OneToOne、@OneTo很多、@ManyToOne和@ManyTo很多上使用

^我不想删除子实体我只想删除引用

我猜这种关系是多对多的?

many users can have many modules
many modules can have many users

如何通过级联注释应用此功能?

when a user is deleted the module is not

when a module is deleted its reference is removed from user

when a user is added a module is not

when a module is added a user is not

当前实体:

@Entity
@Table(name = "module")
public class Module {
    @Id
    @GeneratedValue( strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "modules")
    private Set<User> users;

共有1个答案

壤驷涛
2023-03-14

您可以指定“孤立删除”(OrphanRemoving),如果为true-从数据库中删除,如果为false-不删除

对于许多人

@ManyToMany
@Cascade(value = org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
private Set<User> users;

对于OneToMany

@OneToMany(mappedBy = "topic", cascade = CascadeType.ALL, orphanRemoval = true)
private Set<User> users;
 类似资料:
  • 问题内容: 假设我有一个这样的架构: 如果删除一个人,那么仍然存在孤立的作业,这些作业引用了一个不存在的人,这在数据库中造成了混乱。 有没有一种简单的方法来确保删除一个人时,对该人的所有相应引用也将被删除? 问题答案: 您可以在架构上添加自己的Mongoose 中间件,以将该人从引用该人的所有其他文档中删除。在中间件功能中,就是要删除的文档。

  • 删除数据 force 设置为true 时,不进行物理删除,只是软删除 model.destroy( { where:{ id:this.ctx.params.id }}, { force: true } ) 恢复所有软删除数据 model.restore() 恢复指定ID数据 model.restore( { where: { id: 2 } } )

  • rm(remove),可以删除目录或文件。 rm 要删除的内容的路径 练习:删除文件 rm ninghao-project/README.md 练习:删除整个目录 上面的命令会删除掉 ninghao-project 目录下的 README.md 这个文件。要删除一个目录里包含的所有内容,要加上 r 选项,想不出现确认提示,还要再加一个 f 选项。 rm -rf ninghao-project

  • 删除容器 可以使用 docker container rm 来删除一个处于终止状态的容器。例如 $ docker container rm trusting_newtontrusting_newton 如果要删除一个运行中的容器,可以添加 -f 参数。Docker 会发送 SIGKILL 信号给容器。 清理所有处于终止状态的容器 用 docker container ls -a 命令可以查看所有

  • 模型的删除和数据库的删除方法区别在于,模型的删除会包含模型的事件处理。 删除当前模型 删除模型数据,可以在查询后调用delete方法。 $user = User::get(1); $user->delete(); delete方法返回影响的记录数,V5.1.6+版本开始返回布尔值 根据主键删除 或者直接调用静态方法(根据主键删除) User::destroy(1); // 支持批量删除多个数据 U

  • 请求地址 https://api.es.xiaojukeji.com/river/Member/del 返回数据格式 JSON 请求方式 POST 是否需要登录 是 关于登录授权,参见 如何登录授权 访问授权限制 暂无 请求参数 名称 类型 必选 描述 client_id string yes 申请应用时分配的AppKey access_token string yes 授权后的access to