|
|
|
Hibernate: удаление с many-to-many
|
|||
|---|---|---|---|
|
#18+
Не могу понять как правильно удалять класс, который связан с другим соотношением many-to-many (через промежуточную таблицу, которую гибернейт сам генерит на основании мэппинга). Привожу кусок мэппинга: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Удаление делаю так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. В момент флаша вылазит JDBC Batch exception, который говорит что у меня Constraint violation (объект в "промежуточной" таблице T_RESOURCE_TAG ссылается внешним ключом на удаляемый Tag). Т.е хибернейт не предпринимает никаких действий чтобы удалить сначала все связи объекта, а потом его самого. Я конечно сделал несколько телодвижений и смог удалить все эти зависимости обходным путем (res.getListTags().remove(tag) у каждого Resource, с которым связан Tag), но это куча лишних запросов коллекций. Должен быть какой-то _правильный_ способ сделать это. Подскажите где посмотреть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 16:34 |
|
||
|
Hibernate: удаление с many-to-many
|
|||
|---|---|---|---|
|
#18+
Ну ты сам написал, что cascade="none" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2006, 19:04 |
|
||
|
Hibernate: удаление с many-to-many
|
|||
|---|---|---|---|
|
#18+
ddddiiiiimmmmaaaaНу ты сам написал, что cascade="none" Cascade каскадирует операцию (т.е повторяет для связанных объектов). В случае cascade="all" при удаление объекта Tag будут удаляться все указывающие на него объекты Resource, а это не есть требуемая логика поведения. Это во-первых. Во-вторых, cascade="all" я пробовал и все-равно не удаляется ничего. С другой стороны, каскад тут как бы нужен, но только для удаления объекта из "связной" таблицы T_RESOURCE_TAG, но не из класса "по ту сторону many-to-many". Есть еще идеи? Может просто пример рабочий есть у кого? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2006, 14:59 |
|
||
|
Hibernate: удаление с many-to-many
|
|||
|---|---|---|---|
|
#18+
10.11. Transitive persistence Recommendations: * It doesn't usually make sense to enable cascade on a <many-to-one> or <many-to-many> association. Cascade is often useful for <one-to-one> and <one-to-many> associations. * If the child object's lifespan is bounded by the lifespan of the of the parent object make it a lifecycle object by specifying cascade="all,delete-orphan". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2006, 16:02 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=33767195&tid=2149056]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
172ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 457ms |

| 0 / 0 |
