2014-08-28 59 views
0

如何获取Criteria API中使用的参数标记的数量?JPA如何获取Criteria API中使用的参数标记的数量?

我使用标准的API来创建SQL语句与有许多参数标记IN关键字。

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)); 
} 
相关问题