JPA: удалить дочерние объекты
У меня есть сущность (например, Document), которая используется как дочерняя в 4 других сущностях (используя @OneToMany с @JoinTable в родителях). Я не использую Двунаправленное картографирование. Мое требование - удалить ребенка (то есть документ), и у меня есть два способа сделать это, один из них - получить 4 родителей, удалить ребенка и обновить их. Во-вторых, используя собственный запрос (используя jdbcTemplate), чтобы удалить запись из 4 таблиц соединения и удалить дочерний элемент.
Есть ли другой способ сделать это намного проще?
2 ответа
Создайте абстрактный базовый класс, содержащий Document как член и пользовательское наследование JPA -> http://en.wikibooks.org/wiki/Java_Persistence/Inheritance Чем должно быть возможно получить всех пользователей документа всего одним запросом. Чем должно быть относительно легко удалить все ссылки.
Не делайте магию за автоматическим удалением. Вот за стоимость документации.
Добавить удаленное удаление (т.е. удалить дочерний объект, когда он удален из коллекции в родительском объекте). Чтобы включить его, нужно добавить
@OneToMany(orphanRemoval= истина)
в собственнике.