2015-05-04 4 views
0

У меня есть сущность (например: Документ), которая используется как дочерний элемент в 4 других объектах (используя @OneToMany с @JoinTable у родителей). Я не использую двунаправленное сопоставление. Мое требование - удалить Child (i.e Document), и у меня есть два способа сделать это, одним способом, получить 4 родителя, удалить из них ребенка и обновить их. Во-вторых, используя собственный запрос (используя jdbcTemplate), чтобы удалить запись из 4 таблиц объединения и удалить дочерний элемент.JPA: Удалить дочерние объекты

Есть ли другой способ, это можно сделать гораздо проще?

ответ

0

Создание абстрактного базового класса, содержащего документ как члена и пользователя. JPA inhertiance ->http://en.wikibooks.org/wiki/Java_Persistence/Inheritance Чем может быть возможно получить всех пользователей документа только с одним запросом. Чем удастся удалить все ссылки.

Не делайте волшебство за автоматическим удалением. То для цены документации.

0

Добавить сиротское удаление (т. Е. Удалить дочерний объект, когда он удален из коллекции в родительском элементе). Чтобы включить ее, вам нужно добавить

@OneToMany (orphanRemoval = истина)

обладанием лица.

+0

Yogesh, это то же, что и первый вариант, о котором я упомянул. С этим я должен вытащить всех 4 родителей, которые являются дорогостоящими транзакциями БД. – Ramang

+0

@Ramang вы можете попробовать cascade = "удалить" вариант. – yogesh

+0

Yogesh, У меня однонаправленное отображение, и я не удаляю родителя. Я просто хочу удалить ребенка, используя его ПК. – Ramang