Hibernate 无法在Kotlin中添加条件api谓词,获取类型接口失败错误

Hibernate 无法在Kotlin中添加条件api谓词,获取类型接口失败错误,hibernate,kotlin,criteria-api,Hibernate,Kotlin,Criteria Api,我遇到了一个我无法解决的非常恼人的问题,我想我遗漏了一些非常直接的东西,因为我已经有了Java的工作代码 基本上,我得到的是: class ConfigurationSpecification( private var list: MutableList<SearchCriteria> = mutableListOf() ) : Specification<Configuration> { override fun toPredicate(root

我遇到了一个我无法解决的非常恼人的问题,我想我遗漏了一些非常直接的东西,因为我已经有了Java的工作代码

基本上,我得到的是:

class ConfigurationSpecification(
        private var list: MutableList<SearchCriteria> = mutableListOf()
) : Specification<Configuration> {
    override fun toPredicate(root: Root<Configuration>, query: CriteriaQuery<*>, builder: CriteriaBuilder): Predicate? {
        val predicates: MutableList<Predicate> = mutableListOf()

        for (criteria in list) {
            if (criteria.operation == "EQUALS") {
                predicates.add(builder.equal(root.get(criteria.key), criteria.value)) <- NOT WORKING root.get(criteria.key) this is making issue
            }
        }

        return builder.and(predicates[0])
    }
}
类配置规范(
私有变量列表:MutableList=mutableListOf()
):规格{
重写fun toPredicate(根:根,查询:CriteriaQuery,生成器:CriteriaBuilder):谓词{
val谓词:MutableList=mutableListOf()
对于(列表中的标准){
if(criteria.operation==“EQUALS”){
谓词.add(builder.equal(root.get(criteria.key)、criteria.value))来自文档:

路径获取(字符串属性名)

创建与引用属性对应的路径

注意:使用基于字符串的API的应用程序可能需要指定 类型,以避免使用 路径变量

要修复错误,您需要显式指定泛型类型,因为Kotlin编译器无法从上下文推断它:

predicates.add(builder.equal(root.get</* type of criteria.value */>(criteria.key), criteria.value))
predicates.add(builder.equal(root.get(criteria.key)、criteria.value))

谢谢,先生,就这样!
predicates.add(builder.equal(root.get</* type of criteria.value */>(criteria.key), criteria.value))