2011-04-21 55 views
0

我似乎无法测试一个对象是否被延迟初始化。我在这里做错了什么?测试grails属性是懒惰还是未初始化?

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和一个String属性 - true。也许FetchMode.LAZY不是保证 - 如果您要求简单类型,则无论如何都会被抓取。

什么是preferences'type?

+0

这是一个具有适当对象图的对象。爱。我正在使用grails 1.3.6 - 你在用什么? – 2011-04-22 03:47:43

+0

我在1.3.5。如果启用SQL日志记录,那么在日志中有哪些查询?如果您也尝试收集财产呢? – 2011-04-22 07:28:22