我正在尝试在我的entityManagerFactory中设置查询+锁定超时,因为我在https://msdn.microsoft.com/en-us/library/ms378988(v=sql.110).aspx读取默认锁定超时无限期。
现在我一直在尝试一些事情,但正如文档所示,这些属性的成功取决于数据库。我有几个100个查询,所以我更喜欢在entityManager级别上执行此操作。
我尝试了什么:
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() throws JDBCDSLogException {
LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource());
em.setPackagesToScan("com.my.app.model");
JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
em.setJpaVendorAdapter(vendorAdapter);
em.setJpaProperties(additionalProperties());
return em;
}
Properties additionalProperties() {
//more settings
properties.setProperty("javax.persistence.query.timeout", "1");
properties.setProperty("javax.persistence.lock.timeout", "1");
return properties;
}
但我的查询在1ms后没有超时。 (只是一个示例值,所以我可以快速测试,它最终会出现在配置文件中)。
我猜SQLJDBC4应该等同于hibernate.connection.oracle.jdbc.readtimeout
,但我似乎无法找到它。
答案 0 :(得分:0)
1ms的值太小,无法测试超时。尝试1000或更多。