Как заставить транзакции работать в Grails

Расширения Firefox находятся на:

%USERPROFILE%\AppData\Roaming\Mozilla\Firefox\Profiles\{profile}.default\extensions

Каждое расширение будет иметь свой идентификатор в качестве имени файла вместе с расширением .xpi.

Чтобы узнать, какой идентификатор принадлежит установленному добавочному имени, посетите about:support и сверьтесь с таблицей под названием Extensions.

Помните, что изменение расширения приведет к отключению Firefox при следующем запуске, поскольку оно больше не будет соответствовать его сигнатуре подлинности . Специальное издание Firefox, такое как Nightly, Developers или ESR, требуется, чтобы изменить это поведение .

9
задан Brad Rhoads 27 October 2009 в 15:27
поделиться

3 ответа

Вам также необходимо убедиться, что внутри службы генерируется исключение RuntimeException для автоматического отката транзакции.

Итак, я бы сделал следующее:

def addParent(pName) {
        println "add parent: ${pName}"
        def theParent = new Parent(name:pName)
        if(!theParent.save()){
            throw new RuntimeException('unable to save parent')
        }
        return theParent
    }

def addChild(cName,Parent theParent) {
    println "add child: ${cName}"
    def theChild = new Child(name:cName,parent:theParent)
    theChild.save()
    if(!child.save()){
        throw new RuntimeException('unable to save child')
    }
    return theChild
}

, а затем поймал исключения в контроллере и отображать ошибки.

Другой способ - отключить автоматические транзакции и использовать Parent.withTransaction и вручную пометить транзакцию для отката, если есть ошибка проверки.

5
ответ дан 4 December 2019 в 21:10
поделиться

Я считаю, что это должно быть:

class AddRecordsService {
    static transactional = true;// note *static* not boolean
}
3
ответ дан 4 December 2019 в 21:10
поделиться

В качестве альтернативы вы можете использовать свойство failOnError при сохранении объектов домена - если сохранение завершится неудачно из-за ошибки проверки, тогда будет сгенерировано исключение.

 def addChild(cName,Parent theParent) {
    println "add child: ${cName}"
    def theChild = new Child(name:cName,parent:theParent)
    theChild.save(failOnError:true)
    return theChild
}

Это поведение также можно включить глобально с помощью установив для свойства grails.gorm.failOnError в grails-app / conf / Config.groovy значение true

. Дополнительные сведения см. в документации руководства пользователя для 'save': http://grails.org/doc /latest/ref/Domain%20Classes/save.html

2
ответ дан 4 December 2019 в 21:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: