JPA 如何获取 Criteria API 中使用的参数标记的数量?
Posted
技术标签:
【中文标题】JPA 如何获取 Criteria API 中使用的参数标记的数量?【英文标题】:JPA How to get the number of parameter markers used in Criteria API? 【发布时间】:2014-08-28 10:02:32 【问题描述】:如何获取 Criteria API 中使用的参数标记的数量?
我正在使用 Criteria API 创建带有 IN
关键字的 SQL 语句,该关键字具有许多参数标记。
CriteriaBuilder cb = ...
...
CriteriaBuilder.In<String> in = cb.in(...);
...
for (...)
in.value(...);
我开始收到SQLException
“准备好的或可调用的语句有超过 2000 个参数标记。”
有没有办法获得目前使用的参数标记的实际数量?我可以自己数一数,但很容易出错。
【问题讨论】:
【参考方案1】:既然你知道你可能会在某个时候达到参数限制,因为它不可能是无限的,为什么不在你的代码中处理这个?
将您的参数数组分成块,对每个块运行查询并将结果组合成一个循环。
那你就不用关心参数的实际数量是多少了。它永远不会大于您决定的大小。
public static List<<List<Long>> chunkifyIdList(List<Long>, int chunkSize)
...
List<MyObject> results = new ArrayList<MyObject>();
for (List<Long> chunk: chunkifyIdList(inputData))
results.add(myDAO.findAll(chunk));
【讨论】:
以上是关于JPA 如何获取 Criteria API 中使用的参数标记的数量?的主要内容,如果未能解决你的问题,请参考以下文章
使用 JPA Criteria API,你能做一个只导致一个连接的 fetch join 吗?
如何在 JPA Criteria API 上正确使用 JOIN
如何使用 JPA Criteria API / Hibernate 按 Case 语句分组
如何在JPA Criteria查询API中编写自定义查询作为根?
JPA Criteria API where subclass - 出现错误:无法针对路径 [null] 解析属性 [lastName]