Aşağıdaki kod var: ServiceA.save()
denilen ve bir özel durum oluşur olduğunda geri dönmek çalıştığındaGrails UnexpectedRollbackException oluştu: Emin Değil Neden
class ServiceA {
def save(Object object) {
if (somethingBadComesBack) {
throw new CustomRuntimeException(data)
}
}
}
class ServiceB {
def serviceA
def save(Object object) {
try {
serviceA.save(object)
// do more stuff if good to go
} catch(CustomRuntimeException e) {
// populate some objects with errors based on exception
}
}
}
class ServiceC {
def serviceB
def process(Object object) {
serviceB.save(object)
if (object.hasErrors() {
// do some stuff
}else{
// do some stuff
}
def info = someMethod(object)
return info
}
}
class SomeController {
def serviceC
def process() {
def object = .....
serviceC.save(object) // UnexpectedRollbackException is thrown here
}
}
, ServiceC.save()
bir UnexpectedRollbackException
atıyor.
try {
serviceC.process(object)
}catch(UnexpectedRollbackException e) {
println e.getMostSpecificCause()
}
ve ben alıyorum:
org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only
Bunu düzeltmek için nasıl arayan nereden başlayacağınızı emin değilim
aşağıdaki yaptım.
Teşekkürler Burt. Bu yaklaşımla etrafta dolaşıp ne alabileceğimi görüyorum. Geri rapor edeceğim ... – Gregg
Grails 2.3.7, bu durumu varsayılan olarak ele almak için bir özellik içerir: http://jira.grails.org/browse/GRAILS-11145 –
@FlareCoder - Bunu paylaştığınız için teşekkür ederiz! Ben sadece 2.3.6 ile 2.3.7 arasındaki notlardan yükselttim ve sorun çözüldü. – arcseldon