Отношения OneToOne с каскадом, удаляющим обе стороны - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть проект, основанный на генераторе JHipster.У меня есть две сущности: шаблон и файл.Один шаблон имеет только один файл, и один файл может быть прикреплен только к одному шаблону.Так что я думаю, что это типичные отношения OneToOne.Как удалить другую сущность при удалении одной стороны отношений?Я имею в виду: когда я удаляю Pattern, я хочу удалить также File.Также, когда я удаляю File, я хочу удалить Pattern.У меня есть что-то вроде этого:

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 голосов
/ 21 ноября 2018

Это должно работать:

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-совместимый код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...