|
|
|
Hibernate, каскадные удаления и HQL
|
|||
|---|---|---|---|
|
#18+
Всем привет. Такой вопрос: должны ли срабатывать каскадные удаления для detail таблицы в Hibernate если из master таблицы строки удаляются с использованием HQL?? если удалять объекты передавая их в метод delete сессии - каскадные удаления срабатывают. Если через HQL - вылетает foreign key violation Так и должно быть, или я что-то не так делаю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2005, 17:52 |
|
||
|
Hibernate, каскадные удаления и HQL
|
|||
|---|---|---|---|
|
#18+
Милый Собак, Тут дело наверно не в HQL. А вот в том, что H* все SQL запросы кеширует, и выполняет их, как ему угодно. Самый верный способ - это поотлаживать коде (в том числе и H*). Много интерестного узнаете, чес.слово! Там и буде понятно, что в какой последовательности в базу стучиться. Ну и некий совет из страны советов. После кое-какого траха у нас в конторе решили установить тако правило - всякое изменение в базе через Stored Procedure. Я не только жабу имею ввиду, вообше все, чего ваяем. Ну, оно конечно не 100% - но 95 точно. Там какой флажек выставить - знамо процедуру городить не надо. А вот с объектами строго. Так вот, замапируй свои объекты на SP - а внутрях разбирайся, как хошь ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2005, 22:14 |
|
||
|
Hibernate, каскадные удаления и HQL
|
|||
|---|---|---|---|
|
#18+
нарыл в нетеAgain: pay real care to relational constraints. For example: using a bulk delete will not delete entries from join tables, or delete dependent objects. If you need this, and you want to use the bulk update, you will need CASCADE DELETE turned on in the database. правда не въехал, что значит "you will need CASCADE DELETE turned on in the database" (триггеры, штоле), но смысл в том, что сам хибер так не может. Удаяляйте как persistence объекты либо несколькими запросами. andrushok - убей не пойму, как кеширование запросов хибером влияет на внешние ключи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2005, 12:16 |
|
||
|
Hibernate, каскадные удаления и HQL
|
|||
|---|---|---|---|
|
#18+
Я так, от фонаря могу предпологать. Так как данных ксперементов с Н* не делал. Допустим есть нека табличка А для A объектов. А в себе содержить неку коллекцию B объектов (табличка B). Как связать - через FK: B.PARENT_ID -> A.ID например. Теперя как вставлять сначала в A некую суть, походу дела получам A.ID, потом в B усю коллекцию Как удалять Сначала в B усе, что имеет B/PARENT_ID = A.ID, потом и из A Я таки не думаю, шо H* такой глюпий, что таку просту логику не отслеживат. Но может где-то и глючит - так что надо отлаживаться. Смотреть надо. Так как запросы выполняются не сразу а on demand - что-то и не срослося ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2005, 22:38 |
|
||
|
Hibernate, каскадные удаления и HQL
|
|||
|---|---|---|---|
|
#18+
Pitbull terrier нарыл в нетеAgain: pay real care to relational constraints. For example: using a bulk delete will not delete entries from join tables, or delete dependent objects. If you need this, and you want to use the bulk update, you will need CASCADE DELETE turned on in the database. правда не въехал, что значит "you will need CASCADE DELETE turned on in the database" (триггеры, штоле), но смысл в том, что сам хибер так не может. Удаяляйте как persistence объекты либо несколькими запросами. Смысл в следующем: в зависимых таблицах для внешних ключей нужно указывть ON DELETE CASCADE, т.е. Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2005, 09:23 |
|
||
|
Hibernate, каскадные удаления и HQL
|
|||
|---|---|---|---|
|
#18+
>>Теперя как вставлять сначала в A некую суть, походу дела получам A.ID, потом в B усю коллекцию >>Как удалять Сначала в B усе, что имеет B/PARENT_ID = A.ID, потом и из A блин ну выгребать лучше на persistence уровне, и забыть про HQL с удалениями - так и сделали :) ХМ - у нас тут корпоративная политика - генерить схему на основании маппингов. При таком подходе все тонкие настройки сразу отметаются ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2005, 11:17 |
|
||
|
Hibernate, каскадные удаления и HQL
|
|||
|---|---|---|---|
|
#18+
Так ведь hbm2ddl позволяет генерить схему по маппингу с правилами ON DELETE CASCADE? Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2005, 11:59 |
|
||
|
Hibernate, каскадные удаления и HQL
|
|||
|---|---|---|---|
|
#18+
У вас версия хибера и база какие? у меня третий на postgre везде на выходе "ON DELETE NO ACTION" на уровне persistence-объектов каскадные удаления работают нормально ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2005, 12:31 |
|
||
|
Hibernate, каскадные удаления и HQL
|
|||
|---|---|---|---|
|
#18+
hibernate-3.0.4, PostgreSQLDialect P.S. Я hibernate только начинаю ковырять, никак руки не доходят наконец сесть и толком разобоаться :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2005, 12:42 |
|
||
|
Hibernate, каскадные удаления и HQL
|
|||
|---|---|---|---|
|
#18+
странно вроде все так же у меня схема генерится мейвеновским плагином у которого косяк с версиями (не хочет с работать с постгре диалектом от третьего хибераб приходится ему второй подсовывать). наверное, в этом трабл все равно спасибо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2005, 12:55 |
|
||
|
Hibernate, каскадные удаления и HQL
|
|||
|---|---|---|---|
|
#18+
трабл скорее всего здесь :) , т.е. в hibernate 2 такой возможности нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2005, 14:02 |
|
||
|
Hibernate, каскадные удаления и HQL
|
|||
|---|---|---|---|
|
#18+
http://jira.codehaus.org/browse/MPHIBERNATE-14 OFF Отметили (слегка) ДР товаришша, настроение ну никак не рабочее :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.06.2005, 14:12 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=801&tid=2152236]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
32ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 246ms |
| total: | 343ms |

| 0 / 0 |
