Grails - 如何设置唯一约束并引发异常

标签 grails grails-orm unique-constraint

我正在尝试在数据库中定义唯一约束。让我们来看一个简单的域类

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/

相关文章:

python - SQLite 中字段的唯一组合?

postgresql - PostgreSQL 完整性检查中的多个唯一部分索引

javascript - View 下的文件无法在Grails中访问

postgresql - 使用 GORM 排序 postgres 索引

grails - 在 Grails GSP 中,Spring MVC 的 <input name ="entity.list[0].field"> 等价于什么?

Grails Web 服务前端没有真正的域

oracle - 新的 Grails 域类未在数据库中创建表

sql - 将主键更改为复合主键

grails - List.retainAll()不能按预期工作(2.3.9版)

grails - Groovy getProperties() 调用为不存在的属性调用 getter 超过 1000 次