【问题标题】:JPA How to get the number of parameter markers used in Criteria API?JPA 如何获取 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 个参数标记。”

有没有办法获得目前使用的参数标记的实际数量?我可以自己数一数,但很容易出错。

【问题讨论】:

    标签: java jpa eclipselink criteria-api


    【解决方案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));
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-27
      • 2011-02-22
      • 1970-01-01
      • 2014-09-01
      • 2013-12-02
      • 1970-01-01
      • 2012-05-30
      相关资源
      最近更新 更多