kotlin-如何在hibernate中查询泛型kclass模型的列表?

4uqofj5v  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(296)
fun getListSize(clazz: KClass<*>) {

        val session = hibernate.openSession()

        val cb = session.criteriaBuilder

        val criteria = cb.createQuery(clazz.java)
        val root = criteria.from(clazz.java)
        criteria.select(root)

        val query = session.createQuery(criteria)
        return query.resultList.size

    }

我在线路上遇到了一个错误 criteria.select(root) 声明: Kotlin: Type mismatch: inferred type is Root<out Any!>! but Selection<out Nothing!>! was expected 它可以很好地处理指定的类,例如 Country::class.java 但否则就失败了。

rsaldnfx

rsaldnfx1#

fun <T : Any> getListSize(clazz: KClass<T>) {

        val session = hibernate.openSession()

        val cb = session.criteriaBuilder

        val criteria = cb.createQuery(clazz.java)
        val root = criteria.from(clazz.java)
        criteria.select(root)

        val query = session.createQuery(criteria)
        return query.resultList.size

    }

对函数的以下更改允许 criteria.select(root) 去工作。
添加 <T : Any> 函数和传递 T 因为在kclass中输入对我有用。

相关问题