JPA规范API中的绑定变量

问题描述

由于性能问题,我必须重构以下代码,以避免在生成的查询中使用原始数字:

override fun getMessages(chatId: Long,count: Int): List<Smth> {
val pageRequest = PageRequest(0,count,sortedByEventTime())
return messageRepository
  .findAll(MessageSpecifications.chatIds(fetchChatIds(chatId)),pageRequest)
  .content
}

其中chatIds()如下:

fun chatIds(ids: List<Long>): (Root<Smth>,CriteriaQuery<*>,CriteriaBuilder) -> Predicate {
return { root,_,cb ->
  cb.or(*ids.map { id ->
    cb.equal(root.get<Long>("chatId"),id)
  }.toTypedArray<Predicate?>())
}
}

在调试日志中的Spring Boot应用程序中,我看到在生成的SQL中插入了原始值。但是由于DBMS性能问题,我需要避免在SQL查询中使用原始值。我需要修改代码以使用绑定变量,以避免在DB中重复执行计划。我怎样才能做到这一点?任何样品,参考文献,代码片段将不胜感激。附言在这种情况下,不能选择升级到最新的Hibernate版本(

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...