我正在尝试在数据库中定义唯一约束。让我们来看一个简单的域类
class Tag {
String name
static mapping = {
sort name: "asc"
}
static constraints = {
name(blank: false, nullable: false, unique: true)
}
}
然后在 Controller 中
def test() {
def tag = new Tag(name: 'test');
tag.save(flush:true);
print tag.id
tag = new Tag(name: 'test');
tag.save(flush:true);
print tag.id
render "it works"
}
输出为
1
null
我的问题是,在第二次保存操作后如何得到异常 - 重要的是要知道第二个标签没有持久化,因此对其进行的所有进一步操作都没有意义。
最佳答案
您可以使用failOnError 来实现此行为。
但是这样当任何验证错误发生时都会抛出 ValidationException,而不仅仅是唯一约束。
tag = new Tag(name: 'test');
tag.save(flush:true, failOnError: true);
print tag.id
关于Grails - 如何设置唯一约束并引发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20939555/