Kotlin 使用Springdata JPA';获取枚举类型时获取InvalidDataAccessApiUsageException;s规范API

Kotlin 使用Springdata JPA';获取枚举类型时获取InvalidDataAccessApiUsageException;s规范API,kotlin,jpa,spring-data-jpa,criteria-api,spring-boot-starter,Kotlin,Jpa,Spring Data Jpa,Criteria Api,Spring Boot Starter,我正在使用Springboot(Kotlin lang.)创建一些端点。我想创建一个Filter函数来获取所有的值。我正在使用SpringDataJPA规范API,它获取实体类中枚举类型的列表。但是,我得到了InvalidDataAccessApiUsageException。下面是代码和堆栈跟踪 规范 fun byServiceTypes(list: MutableList<ServiceType>): Specification<XEntity> {

我正在使用Springboot(Kotlin lang.)创建一些端点。我想创建一个Filter函数来获取所有的值。我正在使用SpringDataJPA规范API,它获取实体类中枚举类型的列表。但是,我得到了InvalidDataAccessApiUsageException。下面是代码和堆栈跟踪

规范

fun byServiceTypes(list: MutableList<ServiceType>): Specification<XEntity> {
        return Specification<XEntity> { root, _, criteriaBuilder -> criteriaBuilder.`in`(root.get(XEntity_.serviceTypes)).value(list) }
}
对于成员列表,是否不需要@ElementCollection?
@Entity
@Table(name = "x")
data class XEntity(
    @Column(nullable = false)
    @Enumerated(EnumType.STRING)
    var serviceTypes: List<ServiceType>
)
public abstract class XEntity_ extends package.BaseEntity_ {
    
    public static volatile ListAttribute<XEntity, ServiceType> serviceTypes;
    
    public static final String SERVICE_TYPES = "serviceTypes";
}
fun getByCityAndFilters(city: String, filters: Map<String, Any>, pageable: Pageable): Page<Deal> {
    return xRepository.findAll(fetchFilters(filters, city), pageable)?.map { it.toDomain() } ?: throw NotFoundException("Resource not found")
}

private fun fetchFilters(filters: Map<String, Any>, city): Specification<XEntity> {
    var specifications: MutableList<Specification<XEntity>> = mutableListOf()

    filters.entries.stream().forEach( Consumer { it ->

                val services: MutableList<ServiceType> = mutableListOf()
                val filterList: List<String> = it.value.toString().split(",")

                for(serviceType in filterList) {
                    when(serviceType.toUpperCase()) {
                        ServiceType.A.name -> services.add(ServiceType.A)
                        ServiceType.B.name -> services.add(ServiceType.B)
                    }
                }

                specifications.add(XFilterSpecifications.byServiceTypes(services))
    })

    specifications.add(XFilterSpecifications.byCity(city)
    var specs: Specification<XEntity> = Specification.where(null)

    for(s in specifications) {
        specs = specs.and(s)
    }
    return specs;
}
org.springframework.dao.InvalidDataAccessApiUsageException: Parameter value [A] did not match expected type [java.util.Collection (n/a)]; 
nested exception is java.lang.IllegalArgumentException: Parameter value [A] did not match expected type [java.util.Collection (n/a)]