powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate Lazy Loading, List - траблы при построении таблицы /добавление новых строк
3 сообщений из 3, страница 1 из 1
Hibernate Lazy Loading, List - траблы при построении таблицы /добавление новых строк
    #38328590
kamenjahr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем,

пару часов назад нах выкинул fetch = FetchType.LAZY и заменил на EAGER в имеющихся у меня сущностях на связях OneToMany. А сделал это вынужденно, так запарился дебагить передебагить код:-((
Задача (упрощенно) следующая - имеется сторонее приложение, где хранятся АйДи ежедневников. В этом стороннем приложении ежедневники представлены... в виде дерева. При этом стороннее приложение не хранит никакой иной информации кроме Айдишки ежедневиков.

Имеется требование, представлять ежедневник в виде таблиц, "рисуемых" веб-приложением на фреймворке ВААДИН 6.х.
При навигации по дереву в стороннем приложении должны в веб-приложении соотв. таблички представлять, которые имеют сл. структуру:

Столбцы - это часы (от 0 до 24 с шагом в час).

Строки - люди, которые должны выполнять задания.

Смоделировано это следующим образом (вкратце):
[Ежедневник] один-ко-многим-к-[Исполнитель] (отображено на яве как java.util.List: т.е Ежедневник содержит java.util.List с Исполнителями. Отображено на БД с помощью отдельного аттрибута, генерируемого хибернейтом изза наличия @OrderColumn аннотации на java.util.List Исполнителей)
[Ежедневник] один-ко-многим-к-[время-суток] (отображено на яве как java.util.Set)...

В таблицу ежедневика должно быть возможным добавить новые строки - упорядочить людей. Таблица редактируемая - допустимо как вводить задания так и удалять/перемещать строки.

Теперь о проблемках, когда были связи с OneToMany с FetchType.LAZY :
Добавил я допустим, новую персону в таблицу, вызвав соотв. методу бизнес-сервиса (где соотв. DAO "пашет"). Отображается все корректно. Состояние БД с представлением - синхронно.
Теперь добавляю вторую строку и тут наступает жопса: в когда я подгружаю ежедневник с hibernateSession.get по айдишке, не смотря на то, что в Базе Данных по этому айди находится соотв. ранее сохраненная персона, когда я спрашиваю "а-дайка-мне-ежедневник-упорядоченные-персоны", он мне возвращает 0 назад (Что видимо с тем связано, что "ленивая" закрузка выставлена и я явно НЕ опрашивал каждый элемент java.util.List ). И вот в такой ежедневник добавляется Это приводит к тому, что БД в таблице, где Исполнители сохранены, появляются две строки с responslibleperson_order, имеющим значение 0. Т.е. грубо говоря индексу 0 java.util.List упорядочены...два элемента. Хибер это решает тем, что берет один из элементов и им инициализирует.

Если я FetchType.EAGER выставляю, такой проблематики не возникает.

java.util.List для хранения исполнителей я взял, дабы в модели не хранить спецом позиции упорядоченной персоны. Перемещение вверх-вниз по таблице реализовал, юзая обычное переупорядочивание индексов в листе с удалением/добавлением елемента. (игнорируюя пока 1+N проблемку)
В настоящее время подумываю вообще убрать java.util.List и заменить его на java.util.Set и добавить к сущности Исполнитель свойство "порядковый-номер" (нО при этом придется ручками нумеровать/перенумеровывать)

Такие дела. Ежели подобные проблемы возникали, хотелось бы узнать как их читатели темы решали. Спасиб:-)
...
Рейтинг: 0 / 0
Hibernate Lazy Loading, List - траблы при построении таблицы /добавление новых строк
    #38328645
IDVsbruck
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот тут примеры приводились вариантов работы с ленивыми списками.
...
Рейтинг: 0 / 0
Hibernate Lazy Loading, List - траблы при построении таблицы /добавление новых строк
    #38328674
kamenjahr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IDVsbruckВот тут примеры приводились вариантов работы с ленивыми списками.
я в курсе вариантов - Hibernate.initialize использую в DAO, когда коллекции вынимаю. В случае, когда я беру ежедневик по айдишнику, я этого не делал. Если делать на каждой операции вызов Hibernate.initialize - то имхо смылса вообще нет в ленивой загрузке.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate Lazy Loading, List - траблы при построении таблицы /добавление новых строк
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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