【发布时间】:2014-02-01 12:23:50
【问题描述】:
首先,感谢您对这个问题感兴趣。
场景是这样的:有一个实体 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 进行了测试,然后实体没有被删除。
有谁知道我做错了什么?
提前感谢您的回答。
【问题讨论】:
标签: java spring entity-framework jpa