![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| vicod |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 24.10.2007 Где: odessa.ua Репутация: 0 Всего: 2 |
Попытаюсь описать свою проблему.
Вообщем, сначала я работал со своей базой с помощью hibernate. Теперь я хочу переписать всё с помощью jdbc. Между таблицами у меня имеются отношения как 1-1 так и 1-М. За создание таблиц, если их нет в базе, отвечает hibernate. Теперь дошёл до того момента(используя уже jdbc), когда мне надо делать удаление записей из таблицы. Мне надо применить ON DELETE CASCADE чтобы "поддержать" связи между таблицами. В hibernate маппингах классов у меня отмечено просто cascade="all". Я так понимаю что это не приводит к созданию внешних ключей в таблице, что помогло бы мне делать каскадное удаление с помощью sql. как с этим бороться? |
|||
|
||||
| Asal |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 288 Регистрация: 26.12.2006 Где: Минск Репутация: 4 Всего: 7 |
руками Добавлено через 5 минут и 10 секунд конечно не приведет, нужно при создании базы указывать ON DELETE CASCADE А зачем с Hibernate переходить на JDBC ? |
|||
|
||||
| vicod |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 24.10.2007 Где: odessa.ua Репутация: 0 Всего: 2 |
так надо
хотите сказать что таблицы мне надо создавать отдельным скриптом, в котором будет всё правильно написано и не пользоваться услугами хибернайта? погуглив нашёл несколько подобных ссылок по теме, но пока ничего не помогло эта и эта |
||||
|
|||||
| vicod |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 24.10.2007 Где: odessa.ua Репутация: 0 Всего: 2 |
сделал.
хибернайт диалект надо поставить org.hibernate.dialect.MySQL5InnoDBDialect, т.к org.hibernate.dialect.MySQLDialect почему-то не поддерживает ON DELETE CASCADE - баг это или фича непонятно. и ещё в маппингах надо указать cascade="all-delete-orphan" и on-delete="cascade" |
|||
|
||||
| Asal |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 288 Регистрация: 26.12.2006 Где: Минск Репутация: 4 Всего: 7 |
ну это предпологалось изначально, вы же отказываетесь от услуг Hibernate, значит Hibernate не будет создавать Вам таблицы (я там понимаю вы пользуетесь ddl - create tables)
да, надо. Это не баг и не глюк. Это особенность MySQL (что бы работал ON DELETE CASCADE надо что бы ENGINE=innodb) |
||||
|
|||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |