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)
それで、私は今何ができますか?
1) c3p0 を使用しないでください。DHCP、BoneCP、または接続プールがまったくない。- 本当に私が望むオプションではありません。
2) どういうわけか、休止状態でこの新しいメソッドを呼び出さないようにしますか? 可能ですか?
3)休止状態3に戻すことも、私にとってはあまり良くありません。