0.5 に移行してから % grails test-app すると,Error running tests: org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [Foo#1]
などと言われることがある. テストの中でデータベースを更新したりしている場合ね.
こんなときには ${GRAILS_HOME}/scripts/TestApp.groovy の 162 ~164 行目app.domainClasses.each { dc ->
dc.clazz.executeUpdate("delete from ${dc.clazz.name}")
}
をコメントアウトすると, とりあえず上記のエラーは出なくなるはず. このコードはテストメソッド終了時にデータベースをクリーンアップしているのだけど, 消すには消す順序ってぇものがあるわけで, それを無視して適当に消しているのがまずいわけだ.
一方でこの修正を入れるとクリーンアップを自動でしなくなるので, データベースの中身は tearDown() 辺りでちゃんと消しておかないと, 前のテスト・メソッドの影響が残ってしまうということになるのじゃね.
http://www.nabble.com/Unit-tests-and-GORM-%28Hibernate%29-tf3697726.html