gpt4 book ai didi

java - Spring JPA : When I delete an entity, 相关实体也被删除

转载 作者:行者123 更新时间:2023-11-29 03:24:53 25 4
gpt4 key购买 nike

首先感谢您对这个问题感兴趣。

场景是这样的:有一个实体 Usuario(用户)有多个角色。当我删除一个用户时,所有相关的角色也被删除。

角色的代码是:

@Entity
@Table(name = "marte_role")
@XmlRootElement
public class Role implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;

private String nombre;

@ManyToMany(
fetch = FetchType.EAGER,
targetEntity = Usuario.class,
cascade = { CascadeType.ALL })
@JoinTable(
name = "marte_usuario_role",
joinColumns = { @JoinColumn(name = "role_id") },
inverseJoinColumns = { @JoinColumn(name = "usuario_id") })
@JsonIgnore
private List<Usuario> users = new ArrayList<Usuario>();

... Getters/setters/builders...

Usuario 的代码是:

@Entity
@Table(name = "marte_usuario")
@XmlRootElement
public class Usuario implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;

private String username;
private String password;
private String email;
private boolean enabled;

@ManyToMany(
fetch = FetchType.EAGER
, targetEntity = Role.class
, cascade = { CascadeType.ALL })
@JoinTable(
name = "marte_usuario_role"
, joinColumns = { @JoinColumn(name = "usuario_id") }
, inverseJoinColumns = { @JoinColumn(name = "role_id") })
private List<Role> roles = new ArrayList<Role>();

@Transient
private int numRoles;

在我看来,这与 CascadeType.ALL 有关。我已经使用 CascadeType.PERSIST、CascadeType.REFRESH、CascadeType.MERGE 而非 CascadeType.ALL 进行了测试,然后实体未被删除。

有谁知道我做错了什么?

预先感谢您的回答。

最佳答案

CascadeType.ALL 还包括 CascadeType.REMOVE,这就是使用此注释删除您的实体的原因。

关于java - Spring JPA : When I delete an entity, 相关实体也被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21497991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com