使用hibernate java mysql保存@Lob时出错 [英] Error when saving @Lob with hibernate java mysql

查看:286
本文介绍了使用hibernate java mysql保存@Lob时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

技术:

hibernate 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 =dataSourcedestroy- method =close
class =com.mchange.v2.c3p0.ComboPooledDataSource>
< property name =driverClass
value =$ {MyApp_Persistance.connection.driver_class}/>
< property name =jdbcUrlvalue =$ {MyApp_Persistance.connection.url}/>
< property name =uservalue =$ {MyApp_Persistance.connection.username}/>
< property name =passwordvalue =$ {MyApp_Persistance.connection.password}/>
< / bean>

我有实体OrganizationDetail:



<$ p $
@Table(name =OrganizationDetails)
public class OrganizationDetail implements Serializable {
...
...
...

@Lob
私有字符串地址;

...

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

 导致:java.lang.AbstractMethodError:方法com / mchange / v2 / c3p0 / impl / NewProxyPreparedStatement.setCharacterStream ILjava / io / Reader; J)V是com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.setCharacterStream(NewProxyPreparedStatement.java)处的抽象
(org.hibernate.type.descriptor.sql.ClobTypeDescriptor中的
) $ 4 $ 1.doBind(ClobTypeDescriptor.java:131)
在org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java:90)
在org.hibernate.type.AbstractStandardBasicType.nullSafeSet (AbstractStandardBasicType.java:286)
在org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:281)
在org.hibernate.type.AbstractSingleColumnStandardBasicType.nullSafeSet(AbstractSingleColumnStandardBasicType.java:56)
在org.hibernate.persister.entity.AbstractEntityPersister.dehydrate (AbstractEntityPersister.java:2843)在org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:3248)

在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)
处org.hibernate作为org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:56)
。 internal.SessionImpl.flush(SessionImpl.java:1222)
在org.hibernate.internal.SessionIm (org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)
org.hibernate.engine.transaction中的pl.managedFlush(SessionImpl.java:425)
。 spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:177)
位于org.springframework.orm.jpa.JpaTransactionManager的org.hibernate.jpa.internal.TransactionImpl.commit(TransactionImpl.java:77)
。 doCommit(JpaTransactionManager.java:513)
在org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:757)
在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.invokeWithinTransac (TransactionAspectSupport.java:272)
在org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation。 Java的:在org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:136 179)

在org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
在org.springframework.data.jpa.repository.support.LockModeRepositoryPostProcessor $ LockModePopulatingMethodIntercceptor.invoke(LockModeRepositoryPostProcessor.java:92)
在org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java: 179)
在org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
at org.springframework.aop.framewor k.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.MethodBindingMethodEx pressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87)
... 76 more

任何人都可以指向正确的方向?有没有任何jar丢失?
我确定这个错误会在我使用@Lob注解时弹出!

解决方案

我遇到同样的问题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 /



这对我很有用。


Technology:

hibernate 4.3.4.Final

spring-data-jpa 1.5.0.RELEASE

mysql-connector-java 5.1.30

c3p0 0.9.5-pre8

Some part of dao context:

<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>

I have entity OrganizationDetail:

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

    @Lob
    private String address;

...

and when im trying to save entity into database i get:

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

Can anyone point me to right direction ? Is there any jar missing ? I'm sure that this error pops up when i use @Lob annotation!

解决方案

I had same problem with Java, Hibernate, Oracle 11g and @Lob annotation.

Searching on web i found that it is fixed by upgrading C3P0 to stable version 0.9.2.1.

Link to MVN Repository, useful if you are using Maven: http://mvnrepository.com/artifact/com.mchange/c3p0/0.9.2.1

If not using Maven just download from Sourceforge C3PO site: http://sourceforge.net/projects/c3p0/files/c3p0-bin/c3p0-0.9.2.1/

That worked for me.

这篇关于使用hibernate java mysql保存@Lob时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆