Grails и ленивое исключение инициализации Hibernate

Это вызвано тем, что много приложений могут зависеть от эволюции. Они имеют экспорт в эволюцию, импорт, или используют его в качестве бэкенда. Эволюция является центром хранения данных PIM Gnome по умолчанию. К сожалению, для двоичного дистрибутива, это означает, что библиотека эволюции должна присутствовать, или некоторые из таких приложений откажут. Все в зависимости от всего - один из основных дефектов двоичного дистрибутива пакета, как Ubuntu, по сравнению с основанным на источнике, как хинду. В хинду проблема решается по-другому. Не пытайтесь удалить его так или иначе, причина, если это работает теперь, это может быть, не будет после некоторых обновлений. Вы действительно так заключены в пространстве? Просто удалите его из меню и забудьте. Между прочим, виджет часов по умолчанию в правом углу раньше зависел от эволюции также.

9
задан Georg Fritzsche 21 May 2010 в 12:08
поделиться

2 ответа

Рассмотрим пример:

class Book {
  String title
  Author author
}

class Author {
  ...
}

Book book = Book.get(1)

Как мы знаем, режим выборки по умолчанию в доменных классах является ленивым. Рассматривая приведенный выше пример, предположим, что мы получаем объект книги, затем объект книги присоединяется к объекту сеанса гибернации, то есть к кешу первого уровня автоматически. И после того, как объект домена отсоединяется от объекта сеанса, а затем мы пытаемся получить book.author, в этот момент возникает исключение ленивой инициализации.

Таким образом, решение состоит в том, чтобы либо использовать режим выборки как активный, либо присоединить объект вашей книги к сеансу гибернации, используя приведенный ниже код:

if(!book.isAttached()){
     book.attach()
}

Приведенное выше описание является одним из сценариев. Могло быть намного больше. Прошу других поделиться.

10
ответ дан 3 November 2019 в 01:02
поделиться

Я получил его, потому что проверял, есть ли у пользователя разрешение на выполнение каких-либо действий с JSecurity / Shiro в службе, которая не была транзакционной. В конце концов, мне просто пришлось установить службу как транзакционную, чтобы избавиться от исключения.

Подробнее здесь: http://www.nabble.com/JSecurity-LazyInitializationException-in-default-DbRealm.isPermitted % 28% 29-td24939803.html

1
ответ дан 3 November 2019 в 01:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: