2014-08-28 57 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)); 
} 
相關問題