【问题标题】:Error when saving @Lob with hibernate java mysql使用休眠 java mysql 保存 @Lob 时出错
【发布时间】:2014-04-27 14:56:57
【问题描述】:

技术:

休眠 4.3.4.Final

spring-data-jpa 1.5.0.RELEASE

mysql-connector-java 5.1.30

c3p0 0.9.5-pre8

dao 上下文的某些部分:

<bean id="dataSource" destroy-method="close"
    class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass"
        value="${MyApp_Persistance.connection.driver_class}" />
    <property name="jdbcUrl" value="${MyApp_Persistance.connection.url}" />
    <property name="user" value="${MyApp_Persistance.connection.username}" />
    <property name="password" value="${MyApp_Persistance.connection.password}" />
</bean>

我有实体OrganizationDetail:

@Entity
@Table(name = "OrganizationDetails")
public class OrganizationDetail implements Serializable {
...
...
...

    @Lob
    private String address;

...

当我尝试将实体保存到数据库中时,我得到:

Caused by: java.lang.AbstractMethodError: Method com/mchange/v2/c3p0/impl/NewProxyPreparedStatement.setCharacterStream(ILjava/io/Reader;J)V is abstract
    at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.setCharacterStream(NewProxyPreparedStatement.java)
    at org.hibernate.type.descriptor.sql.ClobTypeDescriptor$4$1.doBind(ClobTypeDescriptor.java:131)
    at org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:90)
    at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:286)
    at org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:281)
    at org.hibernate.type.AbstractSingleColumnStandardBasicType.nullSafeSet(AbstractSingleColumnStandardBasicType.java:56)
    at org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:2843)
    at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:3248)
    at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:3183)
    at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:3525)
    at org.hibernate.action.internal.EntityUpdateAction.execute(EntityUpdateAction.java:158)
    at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:461)
    at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:347)
    at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:350)
    at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:56)
    at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1222)
    at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:425)
    at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)
    at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:177)
    at org.hibernate.jpa.internal.TransactionImpl.commit(TransactionImpl.java:77)
    at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:513)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:757)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:726)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:478)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:272)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.data.jpa.repository.support.LockModeRepositoryPostProcessor$LockModePopulatingMethodIntercceptor.invoke(LockModeRepositoryPostProcessor.java:92)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)
    at com.sun.proxy.$Proxy55.save(Unknown Source)
    at hr.myapp.service.impl.OrganizationServiceImpl.save(OrganizationServiceImpl.java:50)
    at hr.myapp.web.bean.OrganizationBean.saveOrganizationAction(OrganizationBean.java:44)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.sun.el.parser.AstValue.invoke(AstValue.java:234)
    at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)
    at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
    at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
    ... 76 more

谁能指出我正确的方向?有没有罐子不见了? 我确定当我使用@Lob 注解时会弹出这个错误!

【问题讨论】:

  • 看看这个:javathinking.com/2013/04/photo-credit-markchadwickart-via.html 看来c3p0 0.9.2.1版本没有这个问题。您的 c3p0 版本 (0.9.5-pre8) 似乎不稳定。也许您应该将您的 c3p0 版本降级到 0.9.2.1(或其他稳定版本)并试一试。
  • 你好。哇谢谢。我会在我尝试之后告诉你这是否能解决我的问题。

标签: java mysql spring hibernate jpa


【解决方案1】:

我在使用 Java、Hibernate、Oracle 11g 和 @Lob 注释时遇到了同样的问题。

在网上搜索我发现它已通过将 C3P0 升级到稳定版本 0.9.2.1 来修复。

链接到 MVN 存储库,如果您使用 Maven,则很有用:http://mvnrepository.com/artifact/com.mchange/c3p0/0.9.2.1

如果不使用 Maven,只需从 Sourceforge C3PO 站点下载: http://sourceforge.net/projects/c3p0/files/c3p0-bin/c3p0-0.9.2.1/

这对我有用。

【讨论】:

  • 是的,这是我的问题的解决方案。我将 C3P0 更新到稳定版本 0.9.2.1。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-04
  • 1970-01-01
  • 2014-12-11
  • 2021-09-22
  • 1970-01-01
  • 1970-01-01
  • 2018-11-05
相关资源
最近更新 更多