gpt4 book ai didi

grails - 对 grails 3.x 域对象使用特征和约束

转载 作者:行者123 更新时间:2023-12-04 21:39:36 34 4
gpt4 key购买 nike

是否有可能以某种方式为这些字段创建一个带有字段和约束的特征,然后创建实现该特征的域类并选择带有约束的字段?

我的代码基本上如下所示:

trait Shared {
String sharedField

static constraints = {
sharedField nullable: true
}
}

class ImplementingClass implements Shared {
...
}

使用 null sharedField 保存 ImplementingClass 的实例然后会因违反约束而被拒绝。

是否有可能做到这一点?在域对象实现的特征中是否需要使用约束和其他 GORM 构造的替代语法?

最佳答案

我遇到了同样的问题,我查看了 Grails 的源代码并做了一些实验。importFrom(Shared)不会工作,因为 Grails 会寻找 constraints字段通过 clazz.getDeclaredFields()什么导致特征的空数组。
现在你有两个选择:

  • 制作一个看起来像你的特征的 Java/Groovy 类,但只包含属性和约束映射
    类共享约束{
    字符串共享字段
     static constraints = {
    sharedField nullable: true
    }
    }

  • 现在您可以使用 SharedConstraintsimportFrom
  • Create a groovy script for the constraints .此功能主要用于 Java 领域类,但也可用于特征。

  • 在同一个包中创建一个 SharedConstraints.groovy:
    constraints = {
    sharedField nullable: true
    }
    如果您将 IntelliJ 与 Grails 3.0(也可能是其他版本)一起使用,则脚本必须放在资源文件夹中。如果您按照 Grails 文档中的描述将该文件放在 src/java 文件夹中,脚本将被编译并且无法运行 intelliJ screenshot
    还要注意这个错误 https://github.com/grails/grails-core/issues/10052

    关于grails - 对 grails 3.x 域对象使用特征和约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29978428/

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