我有简单的控制器
@GetMapping("users")
List<User> getUsers() {
我在里面有代码:
for(int i = 0; i<1000;++i)
userRepository.getOne(i);
几分钟后,我有时会得到:
org.hibernate.exception.JDBCConnectionException: could not extract ResultSet
但95%的电话有效。
如果我减少迭代次数:
for(int i = 0; i<100;++i)
userRepository.getOne(i);
它始终有效。
我的设置:
spring.datasource.url=jdbc:mysql://test.dailyrazor.com:3306/test?autoReconnect=true&failOverReadOnly=false&maxReconnects=10
spring.datasource.username=test
spring.datasource.password=test
代码只是为了说明问题,一个真实的例子来自N + 1选择
如何防止org.hibernate.exception.JDBCConnectionException:无法提取ResultSet?
答案 0 :(得分:-1)
总是喜欢在服务中实现你的逻辑。 并在服务上使用@Transactional来维护整个n + 1次迭代的事务。
@Service
@Transactional
public returnType serviceName(){
// write your logic here
}
从您的控制器调用此服务。