Стремительное получение объекта - PullRequest
0 голосов
/ 15 сентября 2009

Я сериализую объект, который имеет глубокую иерархию объектов.

После десериализации я могу получить доступ только к тем полям, которые были доступны в объекте до сериализации. Для отдыха я получаю LazyInitializationException.

class A {
    List<B> objs
}

class B {
    C c
}

class C {
    D d
}

Изначально я получал LazyInitializationException при доступе к a.objs * .c Затем я выполнил цикл перед сериализацией: a.objs.each {it.c} Теперь я получаю LazyInitializationException в a.objs * .c.d, а не в a.objs * .c

Как мне убедиться, что объект выбирает каждую ссылку из БД перед сериализацией?

1 Ответ

0 голосов
/ 16 сентября 2009

Единственный способ, которым я могу придумать, - это пройтись по графу объектов, инициализируя любые найденные вами ленивые коллекции.

Единственный другой способ - использовать замыкание сопоставления в каждом классе домена для отключения отложенной загрузки.

Не могли бы вы обновить объект из базы данных после десериализации с помощью метода refresh ()?

...