Küçük Grails uygulaması yazıyorum ve aşağıdaki oldukça basit bir kod çalıştırırken "createfoo" çağrılarının yaklaşık 1/10: s için StaleObjectStateException: s almaya devam ediyorum. Muhtemelen GORM'i kullanmanın en iyi yolunu kaçırıyorum.) (Başka-atma - (o-kaydedin) -GORM Grails ve StaleObjectStateException
"eğer-validate() mı: Gorm iyi uygulamaları konusunda
def viewfoo = { session.user.refresh() // ... } def createfoo = { session.user.refresh() var user = session.user if (param["name"]) { var newFoo = new Foo() newFoo.name = param["name"] if (newFoo.validate()) { newFoo.save() if (user.validate()) { user.addToFoos(newFoo) } else { user.discard() } } else { newFoo.discard() } } }
Benim sorulara
:Bu
kodudur "GORM'de yeni bir nesneyi sürdürmenin doğru yolu?Kaydetmek üzere olduğum tüm nesneleri doğrulamalı mıyım()? Yani Yukarıdaki kodda hem Foo nesnesini hem de Kullanıcı nesnesini doğrulamalı mıyım? Kullanıcı nesnesini doğrulamak, Foo nesnesinin durumunu gizli olarak kontrol eder mi?
StaleObjectStateException'ı hak etmek için ne yaptım? :-)
Gorm/hazırda istisna: Ben fark
Caused by: Object of class [Foo] with identifier [15]: optimistic locking failed; nested exception is org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [Foo#15]