C3p0与Hibernate 4.2错误:setCharacterStream(ILjava/io/Reader; J)V是抽象的

has*_*san 3 java configuration hibernate c3p0 maven

我正在使用Hibernate 4.2与c3p0,我收到此错误:Method com/mchange/v2/c3p0/impl/NewProxyPreparedStatement.setCharacterStream(ILjava/io/Reader;J)V is abstract

有谁知道我应该使用哪个版本?这是我当前的Maven依赖列表:

<dependency>
    <groupId>com.mchange</groupId>
    <artifactId>c3p0</artifactId>
    <version>0.9.2</version>
</dependency>

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-c3p0</artifactId>
    <version>4.2.0.Final</version>
</dependency>        
Run Code Online (Sandbox Code Playgroud)

Vla*_*cea 8

所述PreparedStatement.setCharacterStream()方法被添加到JDBC 4和根据C3P0 发行说明:

从版本0.9.5开始,c3p0完全支持jdbc4规范.

所以你需要将C3p0库更新为0.9.5:

<dependency>
    <groupId>com.mchange</groupId>
    <artifactId>c3p0</artifactId>
    <version>0.9.5</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

您也可以从Hibernate中排除C3P0依赖关系,以确保Maven使用您明确配置的依赖关系:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-c3p0</artifactId>
    <version>4.2.0.Final</version>
    <exclusions>
        <exclusion>
            <artifactId>c3p0</artifactId>
            <groupId>c3p0</groupId>
        </exclusion>
    </exclusions>
</dependency>
Run Code Online (Sandbox Code Playgroud)

  • 较旧版本的c3p0也可以从其他库中删除.在我们的例子中,它是Quartz 2.2.2 (2认同)