这是我的豆子
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
<property name="defaultTimeout" value="400" />
</bean>
Spring JpaTransactionManager默认超时为-1。在我的情况下,我已经用400秒覆盖了defaultTimeout。所以,如果我覆盖了它,那么它会在指定的defaultTimeout时间后超时。
查看 DataSourceTransactionManager 类
上的代码int timeout = determineTimeout(definition);
if (timeout != -1) {
txObject.getConnectionHolder().setTimeoutInSeconds(timeout);
}
public void setTimeoutInSeconds(int seconds) {
setTimeoutInMillis(seconds * 1000);
public void setTimeoutInMillis(long millis) {
this.deadline = new Date(System.currentTimeMillis() + millis);
}
}
因此,如果超时值不等于-1,那么我指定的超时数是1000的倍数,用于超时。但是,如果我没有覆盖超时值,那么它将为-1。
因此,默认值为-1时会发生超时。
是否超时MySql.Data.MySqlClient.MySqlException:抛出超时过期异常? 有什么建议吗?
答案 0 :(得分:1)
当服务器超时时,MySql本身也有自己的超时。在调试模式下对几个不同的长时间运行查询进行基准测试,如果您看到异常所用的时间与服务器超时相同。