我有10k ID,需要从数据库中获取所有记录,但是findAllById
抛出stack overflow
并且无法完成事务。
我该如何解决?
//itemsList has 10k records in csv format
List<Item> items = factory.getIemRepository().findAllById(itemsList);
最佳答案
根据数据库,大多数数据库都会限制您一次查询的ID数量。假设您的特定数据库的10k不超过此限制,则您提到的stackoverflow
很可能是因为您返回的是10k结果,并且系统内存不足。
尝试增加Java的堆空间。例如,
mvn spring-boot:run -Drun.jvmArguments="-Xmx1024m" -Drun.profiles=dev
参考:How can I configure the heap size when starting a Spring Boot application with embedded Tomcat?