子类的唯一约束

eth*_*ler 5 grails

我目前有一组通过每个层次结构表映射的域子类。基类中的属性之一需要是唯一的,但仅限于每个子类内。我最初的想法是使用鉴别器创建一个多列唯一约束,如下所示:

BaseClass {
   String name

   static constraints = {
       name unique 'discriminator'
   }
}
Run Code Online (Sandbox Code Playgroud)

我得到错误:

Scope for constraint [unique] of property [name] of class [class BaseClass] must be a valid property name of same class
Run Code Online (Sandbox Code Playgroud)

有没有办法使用鉴别器来达到此目的,或者有其他方法来为每个子类设置唯一的属性?切换到每个子类一个表并不是真正可行的。

eth*_*ler 2

嗯,那是令人痛苦的几个小时。上面的代码几乎是正确的,只需要在每个子类中并使用鉴别器的列名称,默认为“class”。

SubClass extends BaseClass {
    static constraints = {
        name unique: 'class'
    }
}
Run Code Online (Sandbox Code Playgroud)