grails - Groovy/Grails - 使用枚举运行应用程序时出错

标签 grails groovy enums run-app

我正面临这个错误

groovy.lang.GroovyRuntimeException: Could not find matching constructor for: AnimalInfoType(java.lang.String, java.lang.Integer, java.lang.Integer) when



通过“run-app”启动应用程序,我为 Enum 创建了构造函数,如下所示:
    package jogoanimais

    public enum AnimalInfoType
    {
      ANIMAL(1), 
      ACTION(2)

        final int value
        private AnimalInfoType(int value) {
          this.value = value
        }

        int value() { value }    
    }

我的域类是这样的:
    class AnimaisTreeMap {

       String nodeDescription
       AnimalInfoType nodeInfo
       AnimaisTreeMap yesAnswerNode
       AnimaisTreeMap noAnswerNode

        static constraints = {
            yesAnswerNode nullable:true
            noAnswerNode nullable:true        

        }
        static mappedBy = [ yesAnswerNode: "none", noAnswerNode: "none" ]   
        static mapping = {
            yesAnswerNode cascade: 'delete'
            noAnswerNode cascade: 'delete'
        }
    }

在我的 BootStrap.groovy 中,我像这样填写表格:
    def noAnswer =  new AnimaisTreeMap(nodeDescription:"macaco", 
                                       nodeInfo: AnimalInfoType.ANIMAL,
                                       noAnswerNode:null, 
                                       yesAnswerNode:null)
    noAnswer.save(failOnError: true)
    def yesAnswer =  new AnimaisTreeMap(nodeDescription:"tubarão", 
                                        nodeInfo: AnimalInfoType.ANIMAL,
                                        noAnswerNode:null, 
                                        yesAnswerNode:null)
    yesAnswer.save(failOnError: true)           

    new AnimaisTreeMap(nodeDescription:"vive na água", 
                       nodeInfo: AnimalInfoType.ACTION,
                       noAnswerNode: noAnswer, 
                       yesAnswerNode:  yesAnswer).
                       save(failOnError: true)                  
}

我在 BootStrap.groovy 做错了什么?

最佳答案

删除枚举构造函数及其公共(public)定义。没必要,默认情况下所有类都是公共(public)的。

并编辑以 Enum 结尾的类。动物信息类型枚举。

enum AnimalInfoTypeEnum
{
  ANIMAL(1), 
  ACTION(2)

    final int value

    int value() { value }    
}

关于grails - Groovy/Grails - 使用枚举运行应用程序时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34341776/

相关文章:

java - 如何在 Groovy 中使用 java.util.Date 作为映射键

grails - 在 Grails 中使用特征进行水平域类重用,是个好主意吗?

java - 如何将GMetrics工具与Grails 3x应用程序集成

grails - 无法在 Grails 3 中填充 java.util.getTimeZone 以进行 Taglib 中的 spock 测试

java - 如何将枚举类型存储到映射中?

将 2 个枚举与数学运算符结合起来

java - 在这种情况下如何避免 if-else 语句

grails - 双向一对一

grails - 如何在Grails Controller 中获取有条件的数据?

java - QueryDSL:QueryDSL 2.9.0 中 ConstructorExpression 和 CaseBuilder 的 JPA 示例