0

もちろん、O / Rに休止状態を使用するGrailsを使用しています。あるインスタンスでは、同じオブジェクトを削除しようとする複数のリクエストがあります。最初のスレッドが削除し、オブジェクトを削除しようとする 2 番目のスレッドが StaleStateException をスローします。これは予想通りです。ドキュメントによると:

http://docs.jboss.org/hibernate/envers/3.6/javadocs/org/hibernate/StaleStateException.html

この例外: Also occurs if we try delete or update a row that does not exist.

さて、私たちの場合も例外ではありません。すでに削除されていてもかまいません。削除の前にチェックを入れる必要はありません。実際には例外ではないため、例外処理を入れたいだけです。

本当にやりたいことは、削除が試行され、オブジェクトがそこにない場合に、この例外がスローされないようにすることです。

Grails/Gormでこれを行う方法はありますか?

私が持っている最良の理想は、休止状態/ grails APIを使用するのではなく、HSQLのほんの少しのSQLで削除を行うことです.

もっと良いものはありますか?

4

1 に答える 1

0

スレッドで例外をキャッチしてみてください。

try {
    YourDomain.withTransaction { status ->

        ...

        yourDomainInstance.delete()

        ...

        }
} catch (org.springframework.dao.OptimisticLockingFailureException olfe) {
log.warn(olfe.toString())
} catch (org.hibernate.StaleStateException staleStateException) {
log.warn(staleStateException.toString())
}
于 2013-09-24T13:48:20.457 に答える