GraphQL Java未正确检测kotlin枚举
我正在使用graphql spring boot kickstarter-以便创建spring graphql服务。我正在使用kotlin构建实际的服务 我在graphql服务中声明了一个枚举类型,我在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
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
}