Проверяет, является ли свойство grails ленивым / не инициализированным?

#hibernate #grails #groovy #grails-orm #lazy-initialization

#переход в спящий режим #grails #groovy #grails-orm #отложенная инициализация

Вопрос:

Кажется, я не могу проверить, является ли объект ленивой инициализацией. Что я здесь делаю не так?

 public void testLazy(){
   User lazyUser = User.withCriteria {
      like("userId", 'test')
      fetchMode("preferences", FetchMode.LAZY )
   }.get(0)

   assertFalse( "DOM objects of user were not lazy initialized",   
         GrailsHibernateUtil.isInitialized(lazyUser, "preferences") )
}
  

Ответ №1:

Вы все делаете правильно.

У меня сработал точно такой же фрагмент кода — для isInitialized() возвращаемого false свойства collection (дочерних объектов домена) и для строкового свойства — true . Возможно, FetchMode.LAZY это не гарантия — если вы запрашиваете простой тип, он все равно извлекается.

Что такое preferences ‘ тип?

Комментарии:

1. Это объект с правильным графом объектов. Ой. Я использую grails 1.3.6 — что используете вы?

2. Я на версии 1.3.5. Что, если вы включите ведение журнала SQL, какие запросы будут в журнале? Что, если вы попробуете это и в свойстве collection?