gpt4 book ai didi

grails - 约束中的导入域

转载 作者:行者123 更新时间:2023-12-02 15:10:57 24 4
gpt4 key购买 nike

我有2个 Realm 类(class)

class a {
String name
static constraints = {
name unique:true
}
}

class b {
String description
}

在域类b中,我想称呼类a
import a
class b {
String description
static constraints = {
description unique:'a.name'
}
}

并得到错误

Scope for constraint [unique] of property [description] of class [b] must be a valid property name of same class



如何获得从A类到B类的属性(property)?

最佳答案

假设您尝试在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

这将导入对两个类共享的属性的所有约束。在您的情况下,没有。

更新

我遇到了类似的问题,并找到了解决方案。所以我想在这里与您分享。
可以使用自定义验证程序解决该问题。在您的情况下,对 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()
})
}

由于要求有些奇怪,因此很难正确回答您的问题。但也许会有所帮助。

关于grails - 约束中的导入域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15369028/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com