Hibernate 4调用c3p0不支持的setBinaryStream

Avr*_*gon 0 java hibernate c3p0

Hibernate 4使用jdbc4,将方法setBinaryStream(int,InputStream,int)的签名更改为setBinaryStream(int,InputStream,long).C3P0不支持这种新方法.

因此调用saveOrUpdate(myObjWithBlob)结果

java.lang.AbstractMethodError: com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.setBinaryStream(ILjava/io/InputStream;J)V
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:122)
at org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)
at $Proxy75.setBinaryStream(Unknown Source)
Run Code Online (Sandbox Code Playgroud)

那我现在该怎么办?

1)不要使用c3p0.DHCP,BoneCP或根本没有连接池. - 真的不是我想要的选择.

2)以某种方式让hibernate避免调用这个新方法?有可能吗?

3)切换回休眠3 - 对我来说也不是很好.

Ste*_*man 7

请升级到c3p0 0.9.2-pre8(或等待几天,最后0.9.2).此问题已在最近的库版本中得到解决.

更新: c3p0-0.9.2现在是一个版本.它确实解决了这个问题.