Допустим следующая ситуация..
- Я объявил три разных источника данных (источник данных, источник данных_b и источник данных_с) в моем DataSource.groovy.
- У меня есть три разных объекта домена, которые используют эти источники данных.
- В своем Контроллере я вызываю метод из сервиса, в котором сохраняю объекты a, b и c. Мне нужно, чтобы при возникновении ошибки ни один из них не сохранялся.
So:
DataSource.groovy
environments {
development {
dataSource {
[...]
}
dataSource_b {
[...]
}
dataSource_c {
[...]
}
}
}
ObjectA.groovy
class ObjectA{
[...]
static mapping = {
//use default datasource
}
}
ObjectB.groovy
class ObjectB{
[...]
static mapping = {
datasource 'b'
[...]
}
}
ObjectC.groovy
class ObjectC{
[...]
static mapping = {
datasource 'c'
[...]
}
}
MyService.groovy
public savingObjects(ObjectA a,ObjectB b,ObjectC c){
a.save()
b.save()
c.save()
}
Я использую Grails 2.4.3 и знаю, что методы в службах являются транзакционными, но, например, если возникает ошибка при сохранении 'c', 'a' и 'b' сохраняются без сброса (сохранить flush:true) .
Любая идея исправить это поведение? Я не хочу использовать источники данных XA.
Спасибо!