| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > hibernate и jdbc. каскадное удаление |
| Автор: vicod 10.11.2008, 19:06 |
| Попытаюсь описать свою проблему. Вообщем, сначала я работал со своей базой с помощью hibernate. Теперь я хочу переписать всё с помощью jdbc. Между таблицами у меня имеются отношения как 1-1 так и 1-М. За создание таблиц, если их нет в базе, отвечает hibernate. Теперь дошёл до того момента(используя уже jdbc), когда мне надо делать удаление записей из таблицы. Мне надо применить ON DELETE CASCADE чтобы "поддержать" связи между таблицами. В hibernate маппингах классов у меня отмечено просто cascade="all". Я так понимаю что это не приводит к созданию внешних ключей в таблице, что помогло бы мне делать каскадное удаление с помощью sql. как с этим бороться? |
| Автор: vicod 11.11.2008, 14:26 | ||||
так надо
хотите сказать что таблицы мне надо создавать отдельным скриптом, в котором будет всё правильно написано и не пользоваться услугами хибернайта? погуглив нашёл несколько подобных ссылок по теме, но пока ничего не помогло http://forum.hibernate.org/viewtopic.php?t=986157 и http://groups.google.com/group/nhusers/browse_thread/thread/51fa613d2d9aba99 |
| Автор: vicod 11.11.2008, 15:55 |
| сделал. хибернайт диалект надо поставить org.hibernate.dialect.MySQL5InnoDBDialect, т.к org.hibernate.dialect.MySQLDialect почему-то не поддерживает ON DELETE CASCADE - баг это или фича непонятно. и ещё в маппингах надо указать cascade="all-delete-orphan" и on-delete="cascade" |
| Автор: Asal 11.11.2008, 17:12 | ||||
ну это предпологалось изначально, вы же отказываетесь от услуг Hibernate, значит Hibernate не будет создавать Вам таблицы (я там понимаю вы пользуетесь ddl - create tables)
да, надо. Это не баг и не глюк. Это особенность MySQL (что бы работал ON DELETE CASCADE надо что бы ENGINE=innodb) |