OneToOne 关系与级联删除双方
OneToOne relationship with cascade deleting both sides
我有一个基于 JHipster 生成器的项目。我有两个实体:模式和文件。一个花样只有一个文件,一个文件只能附加到一个花样上。所以我认为这是典型的 OneToOne 关系。删除是关系的一侧时如何删除其他实体?我的意思是:当我删除模式时,我也想删除文件。另外,当我删除文件时,我想删除模式。
我有这样的想法:
public class Pattern implements Serializable {
@OneToOne(mappedBy = "entityPattern")
@OnDelete(action = OnDeleteAction.CASCADE)
@JsonIgnore
private File file;
}
和
public class File implements Serializable {
@OneToOne(cascade=CascadeType.REMOVE, orphanRemoval = true)
@JoinColumn(unique = true)
private Pattern pattern;
}
但是没用。我有 org.springframework.dao.DataIntegrityViolationException 因违反约束而导致的异常。
这应该有效:
public class Pattern implements Serializable {
@OneToOne(mappedBy = "pattern",cascade = CascadeType.REMOVE)
@JsonIgnore
private File file;
}
public class File implements Serializable {
@OneToOne(cascade=CascadeType.REMOVE, orphanRemoval = true)
@JoinColumn(unique = true)
private Pattern pattern;
}
我只使用了 JPA 兼容代码。
我有一个基于 JHipster 生成器的项目。我有两个实体:模式和文件。一个花样只有一个文件,一个文件只能附加到一个花样上。所以我认为这是典型的 OneToOne 关系。删除是关系的一侧时如何删除其他实体?我的意思是:当我删除模式时,我也想删除文件。另外,当我删除文件时,我想删除模式。 我有这样的想法:
public class Pattern implements Serializable {
@OneToOne(mappedBy = "entityPattern")
@OnDelete(action = OnDeleteAction.CASCADE)
@JsonIgnore
private File file;
}
和
public class File implements Serializable {
@OneToOne(cascade=CascadeType.REMOVE, orphanRemoval = true)
@JoinColumn(unique = true)
private Pattern pattern;
}
但是没用。我有 org.springframework.dao.DataIntegrityViolationException 因违反约束而导致的异常。
这应该有效:
public class Pattern implements Serializable {
@OneToOne(mappedBy = "pattern",cascade = CascadeType.REMOVE)
@JsonIgnore
private File file;
}
public class File implements Serializable {
@OneToOne(cascade=CascadeType.REMOVE, orphanRemoval = true)
@JoinColumn(unique = true)
private Pattern pattern;
}
我只使用了 JPA 兼容代码。