Grails ドメイン オブジェクトの beforeDelete() イベント内でサービスを呼び出したいと考えています。残念ながら、イベントが発生すると、常に再現可能にクラッシュします。問題を再現する例を作成しました。ドメイン オブジェクト:
class Gallery {
def myService
def beforeDelete() {
// System.out.println(myService); // not even this works, same error!
System.out.println(myService.say());
}
}
サービス:
class MyService {
String say() {
"hello"
}
}
テスト コントローラー:
class DeleteController {
def index() {
Gallery.list().each {
it.delete()
}
}
def create() {
def gallery = new Gallery()
gallery.save()
}
}
アプリケーションを起動し、create に続いて index を呼び出すと、次のようになります。
Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [testbeforedelete.Gallery#1]
私が達成したいことは、この例よりも少し複雑なサービスを呼び出すことです。この振る舞いを説明することはできず、これに対処する方法もわかりません。Hibernate イベントには特別な注意が必要であることはわかっていますが、立ち往生しています。