OneToOne关系,级联删除双方

时间:2018-11-21 14:38:38

标签: java hibernate jhipster

我有基于JHipster生成器的项目。我有两个实体:模式和文件。一个模式只有一个文件,并且一个文件只能附加到一个模式。所以我认为它是典型的一对一关系。删除是关联关系的一方面时如何删除其他实体?我的意思是:删除模板时,我还要删除文件。另外,当我删除文件时,我想删除图案。 我有这样的想法:

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异常导致约束冲突。

1 个答案:

答案 0 :(得分:2)

这应该有效:

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兼容代码。