为什么gorm / hibernate急切加载?得到“没有给定标识符的行...”

时间:2013-10-16 08:28:02

标签: hibernate grails lazy-loading gorm

编辑:问题通过评论解决了......

我们在Grails中有域类的标准代码:

class Foo {...}

class Bar { 
   Foo foo
}

没有任何配置,我的未知是在加载Bar的对象时,Foo是延迟加载的。意味着如果我这样做:

def barList = Bar.all

没有加载所有bar对象的Foo,并且如果数据库中不再存在Foo对象,则Bar.all不会因延迟加载而失败,但是当尝试丢失的对象时失败读取。

但是,在我们的设置中,Foo是不同数据库的一部分,可能会删除条目。因此,对于Foo关系,Bar中没有外键。如果发生这种情况,应忽略此类Bar对象。所以我的方法仅仅是:

def barList = Bar.all
barList.each {
   try {
       // do something a.o. with the foo relation
   }
   catch (ObjectNotFoundException e) {
      // place some warnings in the log, but continue with next
   }
} 

可悲的是,Bar.all已经失败并出现了ObjectNotFoundException,这意味着GORM / Hibernate已经加入了Foo表。

但为什么?

0 个答案:

没有答案