编辑:问题通过评论解决了......
我们在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表。
但为什么?