title: Transactions are not getting rollbacked with HikariCP
body: <p>I am using <code>HikariCP</code> for connection pooling. I have tried setting <code>autoCommit</code> to both true and false. Still my transactions are not getting
  rollbacked when an exception occur.</p>
  
  <p>I have tried the same with <code>org.apache.commons.dbcp.BasicDataSource</code>. Transactions are getting rollbacked properly with this datasource but
  not when <code>com.zaxxer.hikari.HikariDataSource</code> is configured.</p>
  
  <p>I'm using MySQL InnoDB database engine.</p>
  
  <p><strong>Edit:</strong> </p>
  
  <pre><code>@Service
  @Transactional(rollbackFor = { Exception.class })
  public class AServiceImpl {
  
  
  @Override
  public SomeDTO signUpUser(SomeDTO someDTO) throws Exception {
  
  Company company = addCompany();
  User user = addUser();
  ------------
  
  }
  
  private Company addCompany()
  
  try{
      return companyRepository.addCompany();
  } catch(PersistenceException e){
  //throws exception
   }
  } 
  
  @Override
  public User addUser()
  try{
  return userRepository.addUser();
  }catch(PersistenceException e){
  //throws exception
  }
  } 
  </code></pre>
  
  <p>Here, exception occurs at <code>addUser</code> method and records inserted through <code>addCompany</code> method isn't rollbacked</p>
  
  <pre><code>&lt;bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig"&gt;
          &lt;property name="driverClassName" value="com.mysql.jdbc.Driver"/&gt;
          &lt;property name="jdbcUrl" value="${jdbc.url}"/&gt;
          &lt;property name="username" value="${jdbc.username}" /&gt;
          &lt;property name="password" value="${jdbc.password}" /&gt;
          &lt;property name="maximumPoolSize" value="100" /&gt;
          &lt;property name="idleTimeout" value="900000" /&gt;
          &lt;property name="connectionTimeout" value="2000" /&gt;
          &lt;property name="minimumIdle" value="20" /&gt;
          &lt;property name="maxLifetime" value="1800000" /&gt;
          &lt;property name="leakDetectionThreshold" value="60000" /&gt;
          &lt;property name="autoCommit" value="false" /&gt;
  
          &lt;property name="dataSourceProperties"&gt;
              &lt;props&gt;
                  &lt;prop key="prepStmtCacheSize"&gt;300&lt;/prop&gt;
                  &lt;prop key="prepStmtCacheSqlLimit"&gt;2048&lt;/prop&gt;
                  &lt;prop key="cachePrepStmts"&gt;true&lt;/prop&gt;
                  &lt;prop key="useServerPrepStmts"&gt;true&lt;/prop&gt;
                  &lt;prop key="useLocalSessionState"&gt;true&lt;/prop&gt;
                  &lt;prop key="useLocalTransactionState"&gt;true&lt;/prop&gt;
                  &lt;prop key="rewriteBatchedStatements"&gt;true&lt;/prop&gt;
                  &lt;prop key="cacheResultSetMetadata"&gt;true&lt;/prop&gt;
                  &lt;prop key="cacheServerConfiguration"&gt;true&lt;/prop&gt;
                  &lt;prop key="elideSetAutoCommits"&gt;false&lt;/prop&gt;
                  &lt;prop key="maintainTimeStats"&gt;true&lt;/prop&gt;
                  &lt;prop key="useLocalTransactionState"&gt;true&lt;/prop&gt;
              &lt;/props&gt;
          &lt;/property&gt;
      &lt;/bean&gt;
  
      &lt;bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource"
          destroy-method="close"&gt;
          &lt;constructor-arg ref="hikariConfig" /&gt;
      &lt;/bean&gt;
  
  HikariCP version: 3.1.0 
  JDK version : 1.8.0_162 
  Database : MySQL InnoDB
  MySQLJDBCDriver version : 5.1.31
  </code></pre>
  
  <p>Looking for some solutions. Thanks in advance.</p>