![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Andrey1 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 27.2.2004 Где: Moscow Репутация: 2 Всего: 5 |
NetBeans генерирует Entity классы для трех таблиц и для третий, у которой ключ состоит из ключей из первых двух, он не генерирует ничего и обзывает ее JoinTable.
Получается нужно самому создавать новый класс для этой таблицы или как работать с сущностями из JoinTable? -------------------- Созерцание и мудрость - едины. Соцерцание - это основа мудрости, а мудрость - это функция (т.е. умение использовать) созерцания. из сутры помоста шестого патриарха Хуэйнена |
|||
|
||||
| v2v |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1620 Регистрация: 20.9.2006 Где: Киев Репутация: 9 Всего: 56 |
посредством сущностей из 1й и 2й таблиц.
в 3й таблице должны быть только связи id_1 и id_2. |
|||
|
||||
| Andrey1 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 27.2.2004 Где: Moscow Репутация: 2 Всего: 5 |
Да, но какой объект нужно возвращать?
Ни в одном объекте нет значения, которое привязано к ключу (то есть, в третьей таблице хранятся записи: (PK1, PK2), Value ---- нужно Value)... Это сообщение отредактировал(а) Andrey1 - 2.12.2008, 23:51 -------------------- Созерцание и мудрость - едины. Соцерцание - это основа мудрости, а мудрость - это функция (т.е. умение использовать) созерцания. из сутры помоста шестого патриарха Хуэйнена |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
Я честно говоря не очень понял суть вопроса, но в целом, в аннотации JoinTable можно указать некоторые параметры, на основании которые будет генерироваться таблица для связи many-to-many и unidirectional one-to-many. Например можно указать как должна называться таблица, как должны именоваться колонки. Если эту аннотацию не использовать то JPA возьмет на себя дефолтное гененирование этих значений...
|
|||
|
||||
| Andrey1 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 27.2.2004 Где: Moscow Репутация: 2 Всего: 5 |
Да, наверное - не подробно описал... Сорри. Есть таблицы, для которых NetBeans генерирует следующие Entity:
В базе еще есть таблица FIELDVALUE, для которой NetBeans ничего не генерирует. Ее ключ есть {SolutionPK, DatafieldPK}, и есть еще столбец Value. Я так понимаю, что к Value нельзя обратиться на уровне объектов, потому что Value нет ни у одного из сгенерированных объектов (и быть не может). Вопрос, как тогда работать с таблицей 'FIELDVALUE'? -------------------- Созерцание и мудрость - едины. Соцерцание - это основа мудрости, а мудрость - это функция (т.е. умение использовать) созерцания. из сутры помоста шестого патриарха Хуэйнена |
|||
|
||||
| v2v |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1620 Регистрация: 20.9.2006 Где: Киев Репутация: 9 Всего: 56 |
а архитектуру бд менять можно?
Добавлено через 30 секунд если в эту промежуточную таблицу добавить свой примари кэй? |
|||
|
||||
| Andrey1 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 27.2.2004 Где: Moscow Репутация: 2 Всего: 5 |
В принципе можно. Но архитектурно все равно могут быть данные, которые должно быть заданы для каждого Solution и каждого Datafield. Осталось понять, как с ними работать.... -------------------- Созерцание и мудрость - едины. Соцерцание - это основа мудрости, а мудрость - это функция (т.е. умение использовать) созерцания. из сутры помоста шестого патриарха Хуэйнена |
|||
|
||||
| v2v |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1620 Регистрация: 20.9.2006 Где: Киев Репутация: 9 Всего: 56 |
в твоей задаче необходимо выделить третью сущность, поскольку хоть она и зависит от первых двух, но всё же она содержит новые данные.
Введение своего ИД и должно выделить эту сущность, а наличие двух внешних ключей из 1 и 2 таблиц будет контролировать целосность данных: таким образом у тебя должен появится третий класс, который и будет контролировать JoinTable. |
|||
|
||||
| Andrey1 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 621 Регистрация: 27.2.2004 Где: Moscow Репутация: 2 Всего: 5 |
Нашел подробное описание проблемы в "Java Persistence with Hibernate (2007)", секция 7.2.3.
Есть два решения: * an intermediate entity class for the join table (через новую вспомогательную сущность). * mapping the join table to a collection of components (через дополнительное свойство-коллекцию в связанных таблицах). Второе решение, похоже, проще. Это сообщение отредактировал(а) Andrey1 - 3.12.2008, 14:52 -------------------- Созерцание и мудрость - едины. Соцерцание - это основа мудрости, а мудрость - это функция (т.е. умение использовать) созерцания. из сутры помоста шестого патриарха Хуэйнена |
|||
|
||||
| MisterCleric |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1043 Регистрация: 16.2.2006 Где: Харьков, Украина Репутация: 33 Всего: 38 |
Привет. Ребята я так и не понял в чем загвоздка у вас?
Я так думаю все запутало то, что IDE нагенерила каких-то классов. Я работаю под ИДЕЯ и она пока не умеет их генерить. Будет - только обрадуюсь. У Andrey1 стоит задача ManyToMany. Такая связь организовуется через третью таблицу, в которой лежит ИД с обоих таблиц. Классическая задача: юзера и роля. Понятно, что каждый юзер может иметь несколько ролей, и обратное - одна роль может быть у нескольких юзеров. На Java это выражается в коллекциях. Коллекция юзеров в роле в Хайбернейт называется "бидирекшн" отсюда выходит у нас такая архитектура:
И собственно все. При назначении роли юзеру мы добавляем в коллекцию ролей новый элемент типа UserRole и вызываем на нашей сущности User persist, что положит новую запись в таблицу ROLEASSIGN. Дальше соответсвенно по логике: надо нам работать с ROLEASSIGN(еще должны быть какие-то поля, действительно она является перзистентной, как-то участвует в нашей бизнес-логике) создаем соответствующую сущность, назначаем ей @Id(может быть композитным). И дальше в сущности User меняем @ManyToMany на @OneToMany и мепимся на коллекцию нашей новой сущности. ЗЫ: что-то мне помниться что это все и описано как раз в Java Persistence with Hibernate -------------------- ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ... |
|||
|
||||
![]()
|
| Правила форума "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. |