hibernate JpaQueryBuilder 使用 IN 查询栈溢出StackOverflowError问题
List<Long> ids = xxx; // ids里面包含有超过3000个元素
JpaQueryBuilder builder = new JpaQueryBuilder();
builder.in("ID", ids);
hibernate会在内部代码对ids用StringBuffer类进行拼装,拼装过程会递归调用某个方法,导致栈溢出StackOverflowError
解决方式是不通过hibernate拼装,使用流处理拼装
ids.stream().map(v -> String.valueOf(v)).collect(Collectors.joining(","));