0

編集:コメントによって解決された問題...

Grails のドメイン クラスには、次のような標準コードがあります。

class Foo {...}

class Bar { 
   Foo foo
}

構成がなければ、Bar のオブジェクトをロードしている間、Foo は遅延ロードされるというのが私の理解です。私がこれをしている場合、つまり:

def barList = Bar.all

すべての bar オブジェクトの Foo は読み込まれません。また、Foo オブジェクトがデータベースに存在しなくなった場合、遅延読み込みが原因で Bar.all が失敗することはありませんが、欠落しているオブジェクトを読み取ろうとすると失敗します。

ただし、私たちのセットアップでは、Foo は別のデータベースの一部であり、エントリが削除される可能性があります。したがって、Bar には Foo リレーションの外部キーはありません。その場合、そのような 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 テーブルに参加していることを意味します。

しかし、なぜ?

4

0 に答える 0