![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| 3x15 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 9.10.2007 Репутация: нет Всего: нет |
Здравствуйте!
Реляционные БД имеют конкретные решения для каждого случая. Было бы правильно описать все случаи в HIBERNATE. И можно было бы проще все решать. А сучай такой. Есть таблица - в ней записи связаны друг с другом many-to-many. Это пример иерархии в которой один элемент может быть в однум случае главным в другом зависимым, при этом не один раз. В реляционных БД решение это отдельная таблица "field_field" типа: id | id_parent | id_chield Все красиво ложится в Hiber:
и даже работает!!! Но важно еще описать каждую связь определнными свойствами, т.е. добавить поля в таблицу "field_field". Например, порядковый номер, описание. Получится: id | id_parent | id_chield | number | description И внимаение вопрос! Как описать эти свойства в HIBERNATE? Можно отдельной сущностью, но это не красиво и затратно по коду, должно быть готовое, красивое решение, т.к. задача стандартная... Спасибо... |
|||
|
||||
| mindflyer |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 20.10.2004 Где: Smolensk, Russia Репутация: 1 Всего: 4 |
А как ты в java собираешься задавать дополнительные характеристики связи? Т.е. какую структуру хочешь сохранять и восстанавливать? Если это обыкновенная коллекция, то тебе их и в java негде хранить. В этом случае нужна именно отдельная сущность. |
|||
|
||||
| 3x15 |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 9.10.2007 Репутация: нет Всего: нет |
Здравствуйте!
Да в яве надо писать отдельный класс. Но если его отмапить в Хибернэйт, то невозможно будет делать операции с изменениями (например, вставка новых связей), т.к. Хибернэйт просит поставить update="false" insert="false". Т.е. все что уже есть в базе красиво мапится и извлекается, но новую связь организовать не могу. В ФАК-ах по Хибернэйту такой случа рассматривается: I have a many-to-many association between two tables, but the association table has some extra columns (apart from the foreign keys). What kind of mapping should I use? Use a composite-element to model the association table. For example, given the following association table:
you could use this collection mapping (inside the mapping for class Foo):
You may also use an <idbag> with a surrogate key column for the collection table. This would allow you to have nullable columns. An alternative approach is to simply map the association table as a normal entity class with two bidirectional one-to-many associations. Но в этом варианте тоже не могу создать новую свзяь. И перед тем как выдать ошибку он сначала удалет все существующие связи у главного узла, затем их снова восстанавливает, короче что-то не так. Проблема не решена... :( |
||||
|
|||||
| mindflyer |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 113 Регистрация: 20.10.2004 Где: Smolensk, Russia Репутация: 1 Всего: 4 |
ИМХО, стандартное решение - это именно отдельная сущность в базе данных. У тебя в java - три класса, в базе данных - три таблицы. Ты хочешь сделать маппинг трёх классов на три таблицы через две сущности hibernate? Зачем так усложнять? Чего ты хочешь добиться? Добавлено через 1 минуту и 49 секунд Что значит не можешь организовать? |
|||
|
||||
| 3x15 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 9.10.2007 Репутация: нет Всего: нет |
Здравствуйте!
Заработало, до концпа сам не понял... Всего две таблицы. Все связи, описанные во второй таблице вяжут записи первой таблицы. Всего 2 класса в яве. для первой таблице и для второй. Вот как это выглядит в Хибернэйте:
Вот все мое непонимание было как можно создать запись в hS если стоит insert="false" update="false" Оказывается можно Добавлено через 1 минуту и 45 секунд И еще непонимаение было в том, что в моем случае это не связь много ко многим... |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |