java - Hibernate 4 调用 c3p0 中不支持的 setBinaryStream

标签 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)

那我现在能做什么?

1) 不要使用 c3p0。 DHCP、BoneCP 或根本没有连接池。 - 这并不是我真正想要的选择。

2)如何让hibernate避免调用这个新方法?这可能吗?

3)切换回 hibernate 3 - 对我来说也不是很好。

最佳答案

请升级到 c3p0 0.9.2-pre8(或等待几天以获得 0.9.2 Final)。此问题已在该库的最新版本中得到解决。

更新:c3p0-0.9.2 现已发布。它确实解决了这个问题。

关于java - Hibernate 4 调用 c3p0 中不支持的 setBinaryStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14771399/

相关文章:

java - Stream.map 和 Collectors.mapping 之间的性能差异

java - AOP @Before 方法未调用

java - IndexNotFoundException[没有这样的索引]

java - Hibernate - 一对一关系单表继承

java - 为什么JPA合并操作会导致更新前多次选择?

java - 在 Hibernate 中需要帮助

java - 如何在 c3p0 中返回连接

postgresql - 我应该激活 c3p0 语句池吗?

Java:显示 HAND 光标并更改 JTable 行中部分文本的字体

java - 使用 SSL(自签名)证书通过 Spring 和 Hibernate 连接 MariaDB