У меня есть домен класс DbUserSchemaServer
с транзиторным свойством unassign
Установить метод собственности в Грааль не может изменить экземпляр глобально
class DbUserSchemaServer {
static transients = ["unassign"]
DbUser user
String schema
DbServer server
BigInteger objects
Date creationDate
String schemaStatus //for dropping
Boolean protect
//Transients
Boolean unassign
static constraints = {
user unique:false, nullable: false, blank:false
schema unique:'server', nullable: false, blank:false
server unique: false, nullable: false, blank:false
objects blank:false, nullable:false
creationDate blank:false, nullable:false
schemaStatus nullable:true, blank: false
}
static mapping = {
protect defaultValue: false
unassign defaultValue: false
}
}
В службе, я попытался изменить значение protect
свойства DbUserSchemaServer
экземпляра. Способ folows
public Boolean protectSchema(DbUserSchemaServer usrSchSrvInst) {
println "protectSchema: "+usrSchSrvInst.schema
if(!usrSchSrvInst.protect) { // If unprotected
if(usrSchSrvInst.schemaStatus.equals("drop")) // If schema status is drop
usrSchSrvInst.setSchemaStatus(null)
usrSchSrvInst.setProtect(true)
println "-->"+usrSchSrvInst.getProtect()
return true
}
else { // If already protected
return true
}
return false
}
Когда я попытался изменить статус схемы TEST_SCHEMA_1 по setProtect(true)
вызова, она изменяется в локальном виде (печатает истинна на станд println
), но не меняется в базе данных запись. Я попытался сохранить экземпляр на instance.save()
bu без изменений в поведении.
Я использую grails 2.4.4 сейчас. Раньше я использовал версию 2.2.4 и работал, как ожидалось. У меня есть эта проблема, когда я перенес приложение в версию 2.4.4. Что может быть причиной и как это можно решить.
Первоначально я пробовал использовать save '(failOnError: true)'. Исключены исключения проверки. Я не понял документацию для опции «flush». Но все равно это сработало. – Syam
OK - 'flush()' просто означает принудительно записать в базу данных. Если вы не укажете это, ваше обновление будет записано в БД, но не обязательно сразу. Действительно хорошее объяснение здесь: http://spring.io/blog/2010/06/23/gorm-gotchas-part-1/ Также посмотрите также на части 2 и 3 серии блога. – John