Grails 2+でこれをやろうとすると
そのように検証を使用することはできません。あなたの例では、同じドメイン クラスのプロパティを参照する必要があります。クラスの制約を修正するには、次のようにB記述できます。
class B {
String description
static contraints = {
description unique:true
}
}
aしかし、このように行われるクラスから制約をインポートしたいと思います。
class B {
String description
static contraints = {
importFrom A
}
}
http://grails.org/doc/latest/guide/validation.html#sharingConstraintsを参照してください
これにより、2 つのクラスが共有するプロパティに対するすべての制約がインポートされます。あなたの場合はどれもありません。
アップデート
同様の質問があり、その解決策を見つけました。そこで、ここであなたと共有しようと思いました。この問題は、カスタム バリデータで解決できます。あなたの場合、クラスの制約B:
static constraints = {
description(validator: {
if (!it) {
// validates to TRUE if the collection is empty
// prevents NULL exception
return true
}
def names = A.findAll()*.name
return names == names.unique()
})
}
要件が少し変わっているため、質問に正しく答えるのは困難です。しかし、多分それは役立つでしょう。