Spring,使用HikariCP VS c3p0,相同的代码,结果不同

问题描述 投票:0回答:1

环境

HikariCP version: HikariCP-java7 2.4.13
JDK version     : 1.7.0_080
Database        : PostgreSQL
Driver version  : 9.1-901.jdbc3

春天,使用HikariCP VS c3p0,相同的代码,不同的结果

  @Transactional
   public Integer enableItem(Long id){

       //change item status from 0 to 1
       Integer result = itemDao.enableItem(id);

       //load item

       //if c3p0 , item status is new value 1
       // but Hikari, item status still is 0
       Item item = itemDao.findItemById(id);
       return result;
   }

在同一笔交易中,首先将商品状态从0更改为1,然后读取最新的商品信息,如果c3p0,则商品状态为新值1,但是,光,商品状态仍为0]

Hikari配置:

    <property name="driverClassName" value="#{meta['dataSource.driverClassName']}" />
    <property name="jdbcUrl" value="#{meta['dataSource.url']}" />
    <property name="username" value="#{meta['dataSource.username']}" />
    <property name="password" value="#{meta['dataSource.password']}" />
    <property name="readOnly" value="false" />

    <property name="idleTimeout" value="#{meta['dataSource.maxIdleTime']}" />
    <property name="connectionTimeout" value="30000" />
    <property name="maxLifetime" value="1800000" /> 
    <property name="maximumPoolSize" value="#{meta['dataSource.maxPoolSize']}" />

    <property name="minimumIdle" value="#{meta['dataSource.minPoolSize']}" />
</bean>

我希望与Hikari一起获得最新的价值。配置有问题吗?

请参见https://github.com/brettwooldridge/HikariCP/issues/1522

spring c3p0 hikaricp
1个回答
0
投票
这两个连接池的事务隔离级别可能具有不同的默认值。

尝试添加<property name="transactionIsolation" value="TRANSACTION_READ_COMMITTED"

© www.soinside.com 2019 - 2024. All rights reserved.