@lob 文字列でエンティティを永続化しようとするとエラーが発生します。コードの一部がうまく機能したことは覚えていますが、それを変更したことはまったく覚えていません。私は混乱しています。これが私がエラーのために持っているものです:
ERROR 30 04 12 23:50:31 [org.hibernate.util.JDBCExceptionReporter] => 開始位置 [1] は CLOB 全体の長さ [0] を超えることはできません com.vaadin.event.ListenerMethod$MethodException 原因: javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: 挿入できませんでした: [life.domain_model.Post] com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod.java:507) で com.vaadin.event.EventRouter.fireEvent(EventRouter.java) :161) com.vaadin.ui.AbstractComponent.fireEvent(AbstractComponent.java:1154) で com.vaadin.ui.Button.fireClick(Button.java:371) で com.vaadin.ui.Button.changeVariables(Button. java:193) com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleVariables (AbstractCommunicationManager.java:1094) で com.vaadin.terminal.gwt.server.AbstractCommunicationManager で。com.vaadin.terminal.gwt.server.CommunicationManager.handleUidlRequest(CommunicationManager.java:266) で doHandleUidlRequest(AbstractCommunicationManager.java:590) com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:476) でorg.vaadin.navigator7.NavigableApplicationServlet.service(NavigableApplicationServlet.java:46) で javax.servlet.http.HttpServlet.service(HttpServlet.java:717) で org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java) :290) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) で org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) で org.apache.catalina.core. StandardContextValve.invoke(StandardContextValve.java:191) org.org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve. java:109) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) で org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859) で org.apache.coyote.http11 .Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(不明なソース) : javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: 挿入できませんでした: [life.domain_model.Post] at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1214) org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1147) org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1153) org.hibernate.ejb.AbstractEntityManagerImpl .merge(AbstractEntityManagerImpl.java:695)、sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブ メソッド)、sun.reflect.NativeMethodAccessorImpl.invoke(不明なソース)、sun.reflect.DelegatingMethodAccessorImpl.invoke(不明なソース)、java.lang. org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:240) のreflect.Method.invoke(不明なソース) $Proxy29.merge(不明なソース) life.dao.ForumDao.merge(ForumDao. java:24) life.dao で。ForumDao$$FastClassByCGLIB$$6eb7cb5f.invoke() at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149) at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:688) ) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) で org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110) で org.springframework.aop.framework.ReflectiveMethodInvocation. continue(ReflectiveMethodInvocation.java:172) で org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:621) で life.dao.ForumDao$$EnhancerByCGLIB$$8ecdd1fd.merge() で life.dao. ForumDaoImpl.mergeDiscussion(ForumDaoImpl.java:29) life.dao.ForumDaoImpl で。saveNewPostForDiscussion(ForumDaoImpl.java:50) の life.dao.ForumDaoImpl$$FastClassByCGLIB$$6d37da1f.invoke() の net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149) の org.springframework.aop。 Framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:688) で org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) で org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java: 110) org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) で org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:621) で life.dao.ForumDaoImpl$$ EnhancerByCGLIB$$66b0b0bd.saveNewPostForDiscussion() で life.ui.layouts.ForumEditorLayout.replyToDiscussion(ForumEditorLayout.java:112) で life.ui.layouts.ForumEditorLayout$3.buttonClick(ForumEditorLayout.java:84) で sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブ メソッド) sun.reflect.NativeMethodAccessorImpl.invoke (不明なソース) で sun.reflect.DelegatingMethodAccessorImpl.invoke (不明なソース) で java.lang.reflect.Method.invoke (不明なソース) で com.vaadin.event.ListenerMethod.receiveEvent(ListenerMethod) .java:487) ... 22 以上 原因: org.hibernate.exception.GenericJDBCException: could not insert: [life.domain_model.Post] at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:140) at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:128) org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:64) org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java: 2327) org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2834) で org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:71) で org.hibernate.engine.ActionQueue.execute(ActionQueue) .java:273) org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:320) org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203) org.hibernate.event. def.AbstractSaveEventListener.org.hibernate.event.def.DefaultMergeEventListener.saveTransientEntity(DefaultMergeEventListener.java:415) で org.hibernate.event.def.DefaultMergeEventListener.saveTransientEntity(DefaultMergeEventListener.java:415) でorg.hibernate.event.def.DefaultMergeEventListener.entityIsTransient(DefaultMergeEventListener.java:303) の .event.def.DefaultMergeEventListener.mergeTransientEntity(DefaultMergeEventListener.java:341) org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java) :258) org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:877) で org.hibernate.impl.SessionImpl.merge(SessionImpl.java:859) で org.hibernate.engine.CascadingAction$6.cascade(CascadingAction) .java:279) org.hibernate.engine で。Cascade.cascadeToOne(Cascade.java:392) org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:335) org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:204) org.hibernate.engine .Cascade.cascadeCollectionElements(Cascade.java:425) org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:362) org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:338) org.hibernate. engine.Cascade.cascadeProperty(Cascade.java:204) org.hibernate.engine.Cascade.cascade(Cascade.java:161) org.hibernate.event.def.DefaultMergeEventListener.cascadeOnMerge(DefaultMergeEventListener.java:630) org org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:255) org.hibernate.impl.SessionImpl.fireMerge(SessionImpl.java:867) で org.hibernate.impl.SessionImpl.merge(SessionImpl) で org.hibernate.event.def.DefaultMergeEventListener.onMerge(DefaultMergeEventListener.java:84) で.java:851) at org.hibernate.impl.SessionImpl.merge(SessionImpl.java:855) at org.hibernate.ejb.AbstractEntityManagerImpl.merge(AbstractEntityManagerImpl.java:686) ... 54 以上 原因: java.sql .SQLException: 開始位置 [1] は、org.hibernate.engine.jdbc.ClobProxy.invoke(ClobProxy.java:146) の CLOB 全体の長さ [0] を超えることはできませんorg.apache.commons.dbcp の .PreparedStatement.setClob(PreparedStatement.java:3553)。org.apache.commons.dbcp の DelegatingPreparedStatement.setClob(DelegatingPreparedStatement.java:187)。org.hibernate.type.descriptor.sql.ClobTypeDescriptor$1.doBind(ClobTypeDescriptor.java:60) の DelegatingPreparedStatement.setClob(DelegatingPreparedStatement.java:187) org.hibernate.type.descriptor.sql.BasicBinder.bind(BasicBinder.java) :89) org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:282) で org.hibernate.type.AbstractStandardBasicType.nullSafeSet(AbstractStandardBasicType.java:277) で org.hibernate.type.AbstractSingleColumnStandardBasicType.nullSafeSet(AbstractSingleColumnStandardBasicType. java:85) org.hibernate.persister.entity.AbstractEntityPersister.dehydrate (AbstractEntityPersister.java:2166) で.AbstractEntityPersister$4.bindValues(AbstractEntityPersister.java:2321) at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:56) ... 85 もっと見る
これは Post エンティティです:
@Entity
public class Post {
@Id @GeneratedValue
private Long id;
@ManyToOne @JoinColumn(name = "owner_id")
private User owner;
@ManyToOne @JoinColumn(name = "editer_id")
private User lastEditer;
private Date creationDate;
private Date lastEditionDate;
@Lob
private String content;
@ManyToOne @JoinColumn(name = "discussion_id")
private Discussion discussion;
public Post(){
}
public Post(User owner,String content){
this.owner = owner;
this.lastEditer = null;
Date curent = new Date();
this.creationDate = curent;
this.lastEditionDate = curent;
this.content = content;
this.discussion = null;
}
//G&S
....
String コンテンツの長さに関係なく、エラーが発生します。私はまだ hibernate 3.6.0 と MySql 5.5 (+ spring ) を使用しています。誰かがこれを修正する方法を教えてもらえますか?