![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
XEugene |
|
||||||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 1.1.2008 Репутация: 1 Всего: 2 |
Есть две таблицы User и Dictionary которые связаны, как многие ко многим.
В Dictionary кроме прочего хранятся роли пользователя. Для связи многие ко многим между ними есть таблица UserRole. User.hbm.xml
UserRole.hbm.xml
Для коллекции ролей в классе User в маппинге указано каскадное сохранение(cascade="save-update"), то есть при изменении коллекции ролей существующего User роли должны автоматически сохранятся в таблице UserRole. Собственно проблема: при добавлении роли следующим образом
выбрасывется иксепшен
хотя в маппинге таблицы для генерации id выбрана стратегия native
То есть, если в двух словах, то суть проблемы в том, что Oracle не генерирует id для таблицы, в маппинге которой указан generator class="native". Почему такое может происходить? |
||||||||||
|
|||||||||||
XEugene |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 1.1.2008 Репутация: 1 Всего: 2 |
Если сменить native на increment - та же ошибка.
Вообще, меня сразу насторожил запрос, сгенерированный hibernate
Первичный ключ URO_ID, тот самый который вызывает ошибку, в запросе отсутствует. |
|||
|
||||
Llucas |
|
|||
![]() J2EE Developer ![]() Профиль Группа: Участник Сообщений: 160 Регистрация: 29.11.2006 Где: Одесса Репутация: нет Всего: нет |
давай полный mapping для этих трех таблиц... посмотрим... + помойму как то странно схема БД выглядит по твоему описанию.
|
|||
|
||||
fixxer |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 672 Регистрация: 14.9.2006 Где: Саратов, Россия Репутация: 4 Всего: 27 |
В Oracle нет типа данных identity/autoincrement. Для генерации уникальных значений используются SEQUENCE. Соответственно тип генератора в хибернейте следует использовать такой же.
Добавлено через 6 минут и 20 секунд Да, native тоже должен сработать, единственное что, нужно указать имя sequence в параметрах генератора. -------------------- ![]() |
|||
|
||||
XEugene |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 1.1.2008 Репутация: 1 Всего: 2 |
native в Oracle у меня всегда работал и так. Подозреваю, что без явного указания сиквенса, hibernate сам создает его. Сейчас попробовал указать в параметре существующий sequence. Ничего не изменилось. Насчёт стратегии increment, по-моему она не использует собственный autoincrement базы данных(как в MySQL). Судя по тому, что написано в документации
|
|||
|
||||
XEugene |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 116 Регистрация: 1.1.2008 Репутация: 1 Всего: 2 |
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |