hibernate JpaQueryBuilder 使用 IN 查詢棧溢出StackOverflowError問題
List<Long> ids = xxx; // ids里面包含有超過3000個元素
JpaQueryBuilder builder = new JpaQueryBuilder();
builder.in("ID", ids);
hibernate會在內(nèi)部代碼對ids用StringBuffer類進行拼裝,拼裝過程會遞歸調(diào)用某個方法,導(dǎo)致棧溢出StackOverflowError
解決方式是不通過hibernate拼裝,使用流處理拼裝
ids.stream().map(v -> String.valueOf(v)).collect(Collectors.joining(","));