设置查询+锁定超时

时间:2016-03-07 08:11:55

标签: sql-server jpa spring-data hikaricp

我正在尝试在我的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,但我似乎无法找到它。

1 个答案:

答案 0 :(得分:0)

1ms的值太小,无法测试超时。尝试1000或更多。