def b = new Book(title: "The Shining")
b.save()
保存
目的
保存一个新的领域类实例或更新数据库中修改后的持久性实例,如有需要,层叠更新到子实例。
示例
说明
save
方法通知持久性上下文该实例应被保存或更新。除非使用了 flush
参数,否则对象不会立即持久保存
b.save(flush: true)
如果验证失败,实例未被持久保存,则 save
方法会返回 null
,如果是成功,则返回实例本身。这可让你使用“Groovy 真值”(null
被认为是 false
) 编写像以下这样的代码
if (!b.save()) {
b.errors.allErrors.each {
println it
}
}
参数
-
validate
(可选) - 若应跳过验证,设置为false
-
flush
(可选) - 若设为true
将刷新持久性上下文,立即持久保存对象,并为乐观锁更新version
列 -
insert
(可选) - 若设为true
将强制 Hibernate 执行 SQL INSERT;在某些情况下(例如使用分配的 ID 时)这很有用,且 Hibernate 无法检测是否执行 INSERT 或 UPDATE -
failOnError
(可选) - 若设为true
,save
方法将在验证失败时抛出grails.validation.ValidationException
。设置grails-app/conf/application.groovy
中的grails.gorm.failOnError
属性也可以触发此行为。如果已设置 Config 属性,且将参数传递给该方法,则该方法参数将始终优先。有关配置属性和其他 GORM 配置选项的更多详细信息,请参阅用户指南的GORM 配置选项部分。 -
deepValidate
(可选) - 确定域实例的关联是否也应被验证,即是否验证级联。默认情况下这是true
- 设置为false
以禁用级联验证。
默认情况下,GORM 类被配置用于 乐观锁定,这是 Hibernate 的一项功能,它包括在表中存储一个递增版本。此值仅在刷新 Hibernate 会话时在数据库中更新。 |