powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / hibernate many-to-many без связующей таблицы
5 сообщений из 5, страница 1 из 1
hibernate many-to-many без связующей таблицы
    #37997893
tepka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги,
Хочется странной вещи, а именно хочется связать две таблицы, без связующей таблицы, но по связующему полю
Таблицы (выдуманы для упрощения) выглядят так:
Код: css
1.
2.
3.
4.
5.
USER                             
----                              
ID int primary key            
NAME varchar2(20)          
ACCESS_GROUP int


Код: css
1.
2.
3.
4.
5.
ACCESS
------
ID int primary key
NAME varchar2(20)
ACCESS_GROUP int




Я реализовал данную связь через one-to-many, и даже все на первый взгляд заработало.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public class User {
    ...
    @Column(name = "ACCESS_GROUP")
    private Integer group;

    @OneToMany
    @JoinColumn(name = "ACCESS_GROUP", referencedColumnName = "ACCESS_GROUP",
        insertable = false, updateable = false)
    private List<Access> accessList;
    ...
}



Но случилась такая фигня, как то, что поле name в объекте User не уникально. И при некоторой выборке давало такую вот штуку:

Код: css
1.
2.
3.
4.
ID   NAME     ACCESS_GROUP 
--   -----    ---------------
10   Pupkin   100
20   Pupkin   100



Т.е. поле ACCESS_GROUP оказалось не уникальным и это кагбэ ломает мозг Hibirnate'у где он думает, что связь является one-to-many а она на самом деле является many-to-many.
И он не может правильно сформировать List<Access> accessList. У первого объекта с ID=10 accessList будет, а у второго будет эксепшен, в зависимости от того какой FetchType используется. Если EAGER, то будет эксепшен "collection is not associated with any session" если LAZY чутка другой эксепшен но сути это не меняет :)

Не могли бы Вы уважаемые коллеги подсказать как правильнее всего маппить такие таблички?
PS. Создание связующей таблицы в моём случаи не выход, так как это требует дополнительных селектов и следовательно проседание по производительности.
...
Рейтинг: 0 / 0
hibernate many-to-many без связующей таблицы
    #37998067
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DISTINCT_ROOT_ENTITY не пробовали?
...
Рейтинг: 0 / 0
hibernate many-to-many без связующей таблицы
    #37999196
tepka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlazkowiczDISTINCT_ROOT_ENTITY не пробовали?
Пробовал, та же ситуация
...
Рейтинг: 0 / 0
hibernate many-to-many без связующей таблицы
    #38001158
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tepka,
Хибер подчиняется законам Рсубд.
Зачем хотеть странного?
...
Рейтинг: 0 / 0
hibernate many-to-many без связующей таблицы
    #38001172
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если нарушить 1НФ и разрешить в ячейке храниить список элементов то
можно сделать связь более сложной. Но это уже будет не классическая
RDBMS а какая-то другая DBMS со своими вытекающими ограничениями.

Oracle с какой-то версии позволяет делать вложенные таблицы (nested tables)
и списковые значения в поле (multivalued attributes). Но как к этому отнесётся
хибернейт и вообще сама реализация ORM-а я не знаю.

Вобщем в попытках найти странного и экзотического вы найдете много часов
потерянного времени.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / hibernate many-to-many без связующей таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]