我想知道在Java Web项目的属性文件中是否有一种特定的方法可以覆盖数据库连接超时?我正在使用Hibernate,Spring和MySQL DB。我尝试了几个不同的属性字段,并将超时时间减少到1毫秒,但是连接仍然完成,事务仍在正确处理中。
这些是我以前无法使用的属性字段...
spring.jpa.properties.javax.persistence.query.timeout=1
spring.jdbc.template.query-timeout=1
hibernate.c3p0.timeout=1
休眠是覆盖此超时值还是只是设置不正确? 预先感谢!
答案 0 :(得分:0)
假设您使用的是Spring Boot,则可以尝试:
spring.transaction.defaultTimeout=1
此属性将事务的defaultTimeout设置为1秒。
(查看TransactionDefinition
的源代码,似乎不可能使用比秒更精确的东西。)
javax.persistence.query.timeout
这是Query
的提示。如果您这样使用它,它应该可以工作:
entityManager.createQuery("select e from SampleEntity e")
.setHint(QueryHints.SPEC_HINT_TIMEOUT, 1)
.getResultList();
另请参阅QueryHints
spring.jdbc.template.query-timeout
请记住,根据JdbcTemplate#setQueryTimeout
javadoc:
在具有在事务级别指定的超时的事务内执行时,此处指定的任何超时将被剩余的事务超时覆盖。
hibernate.c3p0.timeout
我怀疑该属性指定从连接池获取超时,而不是查询执行超时