Hibernate 控制器中的GORM行为
我在Grails控制器中遇到了一个问题。控制器的逻辑是(通过服务调用)对某些数据执行检查,然后如果该服务返回true,则保存数据。但是,当检查发生并失败时,数据仍然保持不变 以下是基本控制器操作代码(criteria.isMet和criteria.msg是服务方法通过映射返回的值):Hibernate 控制器中的GORM行为,hibernate,grails,gorm,Hibernate,Grails,Gorm,我在Grails控制器中遇到了一个问题。控制器的逻辑是(通过服务调用)对某些数据执行检查,然后如果该服务返回true,则保存数据。但是,当检查发生并失败时,数据仍然保持不变 以下是基本控制器操作代码(criteria.isMet和criteria.msg是服务方法通过映射返回的值): stacktrace指向哪里?如果您正在对同一个表/域对象执行查询,hibernate将进行刷新,以尝试持久化脏对象(您新创建的对象将是脏对象)并在那时保存它。()我将代码修改为我在问题中发布的代码,它不再抛出任何
stacktrace指向哪里?如果您正在对同一个表/域对象执行查询,hibernate将进行刷新,以尝试持久化脏对象(您新创建的对象将是脏对象)并在那时保存它。()我将代码修改为我在问题中发布的代码,它不再抛出任何错误。但是,它仍然保存对象(当我不希望它保存时)。有没有办法阻止这种行为?我尝试在object.name=“object”之后执行object.lock(),但这确实会引发一个错误,即当项目未被持久化时无法锁定,这非常有意义。有什么想法吗?如果通过调用else块中的
object.discard()
未满足条件,则该对象将被删除。即使在else块中使用object.discard,该对象仍会保存。我们是否确定未满足条件?
def save() {
{
def object = new Domain(params)
object.name = "OBJECT"
def criteria = service.isCriteriaMet(object)
if(criteria.isMet){
object.save(flush: true)
render(view: "show", model: [objectInstance: object])
}else{
render(view: "create", model: [objectInstance: object])
object?.errors?.rejectValue("id", "default.message", [message(code: messageLabel)] as Object[], criteria.msg)
}
}