Jos*_*ing 5 grails groovy grails-orm
是否有可能以某种方式为这些字段创建具有字段和约束的特征,然后创建实现该特征的域类并使用约束来获取字段?
我的代码基本上看起来像:
trait Shared {
String sharedField
static constraints = {
sharedField nullable: true
}
}
class ImplementingClass implements Shared {
...
}
Run Code Online (Sandbox Code Playgroud)
然后,使用null sharedField保存一个ImplementingClass实例,但会违反约束.
是否有可能做到这一点?是否存在在域对象实现的特征中使用约束和其他GORM构造所需的替代语法?
我也遇到了同样的问题,我查看了Grails的源代码并做了一些实验。
importFrom(Shared)不会起作用,因为 Grails 会constraints通过clazz.getDeclaredFields()导致特征空数组的结果来查找字段。
现在你有两个选择:
class SharedConstraints {
String sharedField
static constraints = {
sharedField nullable: true
}
}
Run Code Online (Sandbox Code Playgroud)
现在您可以SharedConstraints使用importFrom
在同一包中创建 SharedConstraints.groovy:
constraints = {
sharedField nullable: true
}
Run Code Online (Sandbox Code Playgroud)
如果您将 IntelliJ 与 Grails 3.0(也可能是其他版本)一起使用,则必须将脚本放置在 resources 文件夹中。如果按照 Grails 文档中的描述将该文件放置在 src/java 文件夹中,则该脚本将被编译并且将无法运行
另请注意此错误https://github.com/grails/grails-core/issues/10052