Рассмотрим приведенный ниже код. Я пробовал несколько способов установить свойство timeout, но ни один из них, похоже, не работает. В документации по hibernate говорится, что нужно использовать «hibernate.c3p0.timeout», но это не сработало.
https://docs.jboss.org/hibernate/orm/3.3/reference/en-US/html/session-configuration.html
@Bean
public HibernateTransactionManager transactionManager(SessionFactory sessionFactory) {
HibernateTransactionManager txManager = new HibernateTransactionManager();
txManager.setSessionFactory(sessionFactory);
return txManager;
}
@Bean
public LocalSessionFactoryBean sessionFactory() throws PropertyVetoException {
LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
sessionFactory.setDataSource(getDataSource());
sessionFactory.setPackagesToScan(new String[] {"com.myproject"});
sessionFactory.setHibernateProperties(additionalProperties());
return sessionFactory;
}
@Bean
public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
return new PersistenceExceptionTranslationPostProcessor();
}
Properties additionalProperties() {
Properties properties = new Properties();
properties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect"));
properties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto"));
properties.setProperty("hibernate.show_sql", env.getProperty("hibernate.show_sql"));
properties.setProperty("hibernate.jdbc.batch_size", env.getProperty("hibernate.jdbc.batch_size"));
//I've tried each of the following (one at a time obviously) but none of them work
properties.setProperty("hibernate.c3p0.checkout_timeout", "1000");
properties.setProperty("hibernate.c3p0.timeout", "1000");
properties.setProperty("c3p0.checkout_timeout", "1000");
properties.setProperty("c3p0.timeout", "1000");
return properties;
}
Во всем коде, когда я печатаю ниже, я всегда получаю «Timeout: -1»
System.out.println("Timeout: "+sessionFactory.getCurrentSession().getTransaction().getTimeout());