Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GraphQL Java未正确检测kotlin枚举_Java_Spring Boot_Kotlin_Enums_Graphql Java - Fatal编程技术网

GraphQL Java未正确检测kotlin枚举

GraphQL Java未正确检测kotlin枚举,java,spring-boot,kotlin,enums,graphql-java,Java,Spring Boot,Kotlin,Enums,Graphql Java,我正在使用graphql spring boot kickstarter-以便创建spring graphql服务。我正在使用kotlin构建实际的服务 我在graphql服务中声明了一个枚举类型,我在kotlin代码中也声明了该类型。这是我为另一个枚举(时间单位)所做的操作,但是对于新的枚举(工作日),我得到了一个错误 我尝试过为枚举类型创建一个显式解析器,但没有效果 package com.houseshare.server.data.entity import com.vladmihal

我正在使用graphql spring boot kickstarter-以便创建spring graphql服务。我正在使用kotlin构建实际的服务

我在graphql服务中声明了一个枚举类型,我在kotlin代码中也声明了该类型。这是我为另一个枚举(时间单位)所做的操作,但是对于新的枚举(工作日),我得到了一个错误

我尝试过为枚举类型创建一个显式解析器,但没有效果

package com.houseshare.server.data.entity

import com.vladmihalcea.hibernate.type.array.IntArrayType
import org.hibernate.annotations.GenericGenerator
import org.hibernate.annotations.TypeDef
import org.hibernate.annotations.TypeDefs
import java.util.*
import javax.persistence.*
import javax.validation.constraints.Size


@Entity
@Table(name = "scheduler")
@TypeDefs(
    TypeDef(
            typeClass = IntArrayType::class,
            defaultForType = Array<Int>::class
    )
)
class Scheduler(
        @Id @GeneratedValue(generator = "UUID")
        @GenericGenerator(
                name = "UUID",
                strategy = "org.hibernate.id.UUIDGenerator"
        ) val id: UUID = UUID.randomUUID(),
        @Column(length = 50)
        @Size(max = 50)
        var name: String,
        @Column
        var duration: Int? = null,
        @Column
        @Enumerated(EnumType.ORDINAL)
        var durationUnit: TimeUnit?  = null,
        @Column
        var frequency: Int?  = null,
        @Column
        @Enumerated(EnumType.ORDINAL)
        var frequencyUnit: TimeUnit?  = null,
        @Column
        var scheduleDays: Array<Int>?  = null,
        @Column
        @Temporal(TemporalType.TIME)
        var scheduleTime: Date?  = null,
        @Column
        var effort: Int?  = null
    ) {

    override fun toString(): String {
        return "Scheduler [id= + ${this.id}]";
    }

    fun getScheduleDaysList() : List<WeekDay>? {
        return scheduleDays?.map { WeekDay.fromInt(it) }
    }

    fun setScheduleDaysList(daysOfWeek : List<WeekDay>?) {
        if(daysOfWeek == null) {
            this.scheduleDays = null;
        } else {
            this.scheduleDays = daysOfWeek.map { it.value }.toTypedArray();
        }
    }

}

enum class TimeUnit {
    MINUTE, HOUR, DAY, WEEK, MONTH
}

enum class WeekDay(val value: Int) {
    MONDAY(1),
    TUESDAY(2),
    WEDNESDAY(3),
    THURSDAY(4),
    FRIDAY(5),
    SATURDAY(6),
    SUNDAY(7);

    companion object {
        fun fromInt(value: Int) = WeekDay.values().first { it.value == value }
    }
}
产生的错误消息是:
类型“WeekDay”在GraphQL架构中声明为枚举,但不是Java枚举

通过为调度程序创建自定义解析器并在其中声明类型和转换,修复了此问题

type Scheduler {
    id: ID!,
    name: String!
    duration: Int,
    durationUnit: TimeUnit,
    frequency: Int,
    frequencyUnit: TimeUnit,
    scheduleDays: [WeekDay],
    scheduleTime: Time
}

type Time

enum TimeUnit {
    MINUTE,
    HOUR,
    DAY,
    WEEK,
    MONTH
}

enum WeekDay {
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY,
    SUNDAY
}