根据grails域中多列的布尔字段值使字段唯一

Make field unique based on a boolean field value with multiple column in grails domain

我使用的是 grails-2.5.2 版本。我有一个字段,我想根据两个字段使其独一无二。但是如果 isActive 字段值是 true 那么它将有一行具有相同的 roll。但如果 false 则可以使用相同的 roll 保存多个条目。我的class如下:

    class Student {

    Integer roll
    String name
    Boolean isActive

    static constraints = {
      name(unique: ['roll', 'isActive'])
    }
}

其实我想要这样的独一无二 - name(unique: ['roll', 'isActive' == true])

Actually I want the unique like this - name(unique: ['roll', 'isActive' == true])

我们在 GORM 中没有任何特定的支持来表达类似的东西。您需要在应用程序的代码中表达该限制。

我不是 100% 确定,这可能取决于您必须支持哪些数据库,但我认为也没有什么好的方法可以在您的数据库中表达这种限制。