我有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?

07-24 21:18