Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> hibernate и jdbc. каскадное удаление 
V
    Опции темы
vicod
Дата 10.11.2008, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 24.10.2007
Где: odessa.ua

Репутация: 0
Всего: 2



Попытаюсь описать свою проблему.
Вообщем, сначала я работал со своей базой с помощью hibernate.
Теперь я хочу переписать всё с помощью jdbc.
Между таблицами у меня имеются отношения как 1-1 так и 1-М.
За создание таблиц, если их нет в базе, отвечает hibernate.

Теперь дошёл до того момента(используя уже jdbc), когда мне надо делать удаление записей из таблицы. Мне надо применить ON DELETE CASCADE чтобы "поддержать" связи между таблицами.

В hibernate маппингах классов у меня отмечено просто cascade="all". Я так понимаю что это не приводит к созданию внешних ключей в таблице, что помогло бы мне делать каскадное удаление с помощью sql.

как с этим бороться?
PM MAIL   Вверх
Asal
Дата 11.11.2008, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 26.12.2006
Где: Минск

Репутация: 4
Всего: 7



Цитата(vicod @  10.11.2008,  19:06 Найти цитируемый пост)
как с этим бороться?

руками

Добавлено через 5 минут и 10 секунд
Цитата(vicod @  10.11.2008,  19:06 Найти цитируемый пост)
В hibernate маппингах классов у меня отмечено просто cascade="all". Я так понимаю что это не приводит к созданию внешних ключей в таблице, что помогло бы мне делать каскадное удаление с помощью sql.

конечно не приведет, нужно при создании базы указывать ON DELETE CASCADE

А зачем с Hibernate переходить на JDBC ?


--------------------
PM MAIL ICQ   Вверх
vicod
Дата 11.11.2008, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 24.10.2007
Где: odessa.ua

Репутация: 0
Всего: 2



Цитата

А зачем с Hibernate переходить на JDBC ?

так надо smile 

Цитата

конечно не приведет, нужно при создании базы указывать ON DELETE CASCADE

хотите сказать что таблицы мне надо создавать отдельным скриптом, в котором будет всё правильно написано и не пользоваться услугами хибернайта?

погуглив нашёл несколько подобных ссылок по теме, но пока ничего не помогло эта и эта
PM MAIL   Вверх
vicod
Дата 11.11.2008, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 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"
PM MAIL   Вверх
Asal
Дата 11.11.2008, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 288
Регистрация: 26.12.2006
Где: Минск

Репутация: 4
Всего: 7



Цитата(vicod @  11.11.2008,  14:26 Найти цитируемый пост)
хотите сказать что таблицы мне надо создавать отдельным скриптом, в котором будет всё правильно написано и не пользоваться услугами хибернайта?

ну это предпологалось изначально, вы же отказываетесь от услуг Hibernate, значит Hibernate не будет создавать Вам таблицы
(я там понимаю вы пользуетесь ddl - create tables)
Цитата(vicod @  11.11.2008,  15:55 Найти цитируемый пост)
хибернайт диалект надо поставить org.hibernate.dialect.MySQL5InnoDBDialect

да, надо. Это не баг и не глюк. Это особенность MySQL (что бы работал ON DELETE CASCADE надо что бы ENGINE=innodb)


--------------------
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0436 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.