| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Проблема с маппингом в hibernate |
| Автор: Romique 23.3.2006, 19:24 |
| Здраствуйте, при создании маппинга возникла такая проблема. Есть таблица COMPETITION которой соответсвует класс Competition, есть таблица TASK которой соответсвует класс Task. Связь между ними many-to-many, для реализации есть таблица COMPETITION_TASK в которой хранятся соответствия соревнований и заданий (по их ID). У каждого соответствия есть ID (это primary key), то есть номер конкретного задания на конкретном соревновании. Также есть таблица RESULT, ей соответсвует класс Result. В этой таблице есть поле competition_task_id, это foreign key к таблице COMPETITION_TASK, то есть указывает какому заданию на каком соревновнии соответствует данный результат. В объекте Result содержаться объекты Competition и Task. Необходимо настроить маппинг так, чтобы при считывании записи из таблицы RESULT и инициализации объекта Result по значению competition_task_id из таблицы COMPETITION_TASK считывались бы соответствующие ID соревнования и задания, инициализировались по ним объекты и включались в объект результата. При сохранении нового результата нужно по ID соревнования и задания искать их соответствие в таблице COMPETITION_TASK и сохранять в новый ряд таблицы результатов в поле competition_task_id ID этого соответствия. Пробовал использовать join table="COMPETITION_TASK" в маппинге класса Result, но джойн требует в качестве ключа foreign key второй таблицы, указывающий на primary key первой, а у меня ситуация наоборот. Пробовал использовать SQL запрос: formula="(SELECT ct.comp_id FROM COMPETITION_TASK ct, RESULT r WHERE r.competition_task_id = ct.id)" для соревнования и так же для задания. Считывать объекты получалось, а новые объекты записывать в базу нет. Наверное здесь есть очень простое решение, но почему то я не могу его пока найти. |