org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.orm.hibernate3.HibernateSystemException: could not deserialize; nested exception is org.hibernate.type.SerializationException: could not deserialize
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:488)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:431)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at com.gbicc.xbrlcm.filter.SessionTimeOutFilter.filterUrl(SessionTimeOutFilter.java:125)
at com.gbicc.xbrlcm.filter.SessionTimeOutFilter.doFilter(SessionTimeOutFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
Caused by: org.springframework.orm.hibernate3.HibernateSystemException: could not deserialize; nested exception is org.hibernate.type.SerializationException: could not deserialize
at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:659)
at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:378)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:847)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:839)
at com.gbicc.xbrlcm.cert.dao.impl.CertInfoDaoImpl.queryCerInfor(CertInfoDaoImpl.java:47)
at com.gbicc.xbrlcm.cert.service.impl.CertInforServiceImpl.queryCerInfor(CertInforServiceImpl.java:30)
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:585)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:301)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy15.queryCerInfor(Unknown Source)
at com.gbicc.xbrlcm.cert.web.CertInfoCtrl.queryCertDeal(CertInfoCtrl.java:253)
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:585)
at org.springframework.web.servlet.mvc.multiaction.MultiActionController.invokeNamedMethod(MultiActionController.java:472)
at org.springframework.web.servlet.mvc.multiaction.MultiActionController.handleRequestInternal(MultiActionController.java:409)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:874)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:808)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:476)
... 29 more
Caused by: org.hibernate.type.SerializationException: could not deserialize
at org.hibernate.util.SerializationHelper.deserialize(SerializationHelper.java:217)
at org.hibernate.util.SerializationHelper.deserialize(SerializationHelper.java:240)
at org.hibernate.type.SerializableType.fromBytes(SerializableType.java:82)
at org.hibernate.type.SerializableType.get(SerializableType.java:39)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:113)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:102)
at org.hibernate.type.AbstractType.hydrate(AbstractType.java:81)
at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2046)
at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1371)
at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1299)
at org.hibernate.loader.Loader.getRow(Loader.java:1197)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:568)
at org.hibernate.loader.Loader.doQuery(Loader.java:689)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
at org.hibernate.loader.Loader.doList(Loader.java:2211)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2095)
at org.hibernate.loader.Loader.list(Loader.java:2090)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:388)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at org.springframework.orm.hibernate3.HibernateTemplate$29.doInHibernate(HibernateTemplate.java:856)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:373)
... 58 more
Caused by: java.io.StreamCorruptedException: invalid stream header
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:764)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:277)
at org.hibernate.util.SerializationHelper$CustomObjectInputStream.<init>(SerializationHelper.java:252)
at org.hibernate.util.SerializationHelper.deserialize(SerializationHelper.java:209)
... 81 more
(CertInfo) this.getHibernateTemplate().get(CertInfo.class, certInfo.getCert_infor_id());
我在做get方法时就报错!请哪位指教一下!
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:488)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:431)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at com.gbicc.xbrlcm.filter.SessionTimeOutFilter.filterUrl(SessionTimeOutFilter.java:125)
at com.gbicc.xbrlcm.filter.SessionTimeOutFilter.doFilter(SessionTimeOutFilter.java:51)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
Caused by: org.springframework.orm.hibernate3.HibernateSystemException: could not deserialize; nested exception is org.hibernate.type.SerializationException: could not deserialize
at org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:659)
at org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:412)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:378)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:847)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:839)
at com.gbicc.xbrlcm.cert.dao.impl.CertInfoDaoImpl.queryCerInfor(CertInfoDaoImpl.java:47)
at com.gbicc.xbrlcm.cert.service.impl.CertInforServiceImpl.queryCerInfor(CertInforServiceImpl.java:30)
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:585)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:301)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy15.queryCerInfor(Unknown Source)
at com.gbicc.xbrlcm.cert.web.CertInfoCtrl.queryCertDeal(CertInfoCtrl.java:253)
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:585)
at org.springframework.web.servlet.mvc.multiaction.MultiActionController.invokeNamedMethod(MultiActionController.java:472)
at org.springframework.web.servlet.mvc.multiaction.MultiActionController.handleRequestInternal(MultiActionController.java:409)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:874)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:808)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:476)
... 29 more
Caused by: org.hibernate.type.SerializationException: could not deserialize
at org.hibernate.util.SerializationHelper.deserialize(SerializationHelper.java:217)
at org.hibernate.util.SerializationHelper.deserialize(SerializationHelper.java:240)
at org.hibernate.type.SerializableType.fromBytes(SerializableType.java:82)
at org.hibernate.type.SerializableType.get(SerializableType.java:39)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:113)
at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:102)
at org.hibernate.type.AbstractType.hydrate(AbstractType.java:81)
at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2046)
at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1371)
at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1299)
at org.hibernate.loader.Loader.getRow(Loader.java:1197)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:568)
at org.hibernate.loader.Loader.doQuery(Loader.java:689)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
at org.hibernate.loader.Loader.doList(Loader.java:2211)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2095)
at org.hibernate.loader.Loader.list(Loader.java:2090)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:388)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
at org.springframework.orm.hibernate3.HibernateTemplate$29.doInHibernate(HibernateTemplate.java:856)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:373)
... 58 more
Caused by: java.io.StreamCorruptedException: invalid stream header
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:764)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:277)
at org.hibernate.util.SerializationHelper$CustomObjectInputStream.<init>(SerializationHelper.java:252)
at org.hibernate.util.SerializationHelper.deserialize(SerializationHelper.java:209)
... 81 more
(CertInfo) this.getHibernateTemplate().get(CertInfo.class, certInfo.getCert_infor_id());
我在做get方法时就报错!请哪位指教一下!
package com.gbicc.xbrlcm.cert.domain;import java.io.Serializable;
import java.sql.Blob;
import java.util.Date;public class CertInfo implements Serializable {
/**
* 申请信息
*/
private String cert_infor_id; //主键 private String cert_code; //证书的编码 private Date cert_apply_time; //证书申请时间 private Date cert_active_beginTime; //证书生效开始时间 private Date cert_active_endTime; //证书失效时间 private Blob cert_content; //证书的内容 private String cert_apply_ref; //申请信息的ID private Long cert_apply_seq; //申请的流水号,为执单的编号
private String certType; public String getCertType() {
return certType;
} public void setCertType(String certType) {
this.certType = certType;
} private CertApply certApply = new CertApply(); public CertApply getCertApply() {
return certApply;
} public void setCertApply(CertApply certApply) {
this.certApply = certApply;
} public String getCert_infor_id() {
return cert_infor_id;
} public void setCert_infor_id(String certInforId) {
cert_infor_id = certInforId;
} public String getCert_code() {
return cert_code;
} public void setCert_code(String certCode) {
cert_code = certCode;
} public Date getCert_apply_time() {
return cert_apply_time;
} public void setCert_apply_time(Date certApplyTime) {
cert_apply_time = certApplyTime;
} public Date getCert_active_beginTime() {
return cert_active_beginTime;
} public void setCert_active_beginTime(Date certActiveBeginTime) {
cert_active_beginTime = certActiveBeginTime;
} public Date getCert_active_endTime() {
return cert_active_endTime;
} public void setCert_active_endTime(Date certActiveEndTime) {
cert_active_endTime = certActiveEndTime;
} public Blob getCert_content() {
return cert_content;
} public void setCert_content(Blob certContent) {
cert_content = certContent;
} public String getCert_apply_ref() {
return cert_apply_ref;
} public void setCert_apply_ref(String certApplyRef) {
cert_apply_ref = certApplyRef;
} public Long getCert_apply_seq() {
return cert_apply_seq;
} public void setCert_apply_seq(Long certApplySeq) {
cert_apply_seq = certApplySeq;
}}
底层异常
你的序列化ID呢?
import java.sql.Blob;
import java.util.Date;public class CertInfo implements Serializable {
/**
* 申请信息
*/
private static final long serialVersionUID = 1111L;
private String cert_infor_id; //主键 private String cert_code; //证书的编码 private Date cert_apply_time; //证书申请时间 private Date cert_active_beginTime; //证书生效开始时间 private Date cert_active_endTime; //证书失效时间 private Blob cert_content; //证书的内容 private String cert_apply_ref; //申请信息的ID private Long cert_apply_seq; //申请的流水号,为执单的编号
private String certType; public String getCertType() {
return certType;
} public void setCertType(String certType) {
this.certType = certType;
} private CertApply certApply = new CertApply(); public CertApply getCertApply() {
return certApply;
} public void setCertApply(CertApply certApply) {
this.certApply = certApply;
} public String getCert_infor_id() {
return cert_infor_id;
} public void setCert_infor_id(String certInforId) {
cert_infor_id = certInforId;
} public String getCert_code() {
return cert_code;
} public void setCert_code(String certCode) {
cert_code = certCode;
} public Date getCert_apply_time() {
return cert_apply_time;
} public void setCert_apply_time(Date certApplyTime) {
cert_apply_time = certApplyTime;
} public Date getCert_active_beginTime() {
return cert_active_beginTime;
} public void setCert_active_beginTime(Date certActiveBeginTime) {
cert_active_beginTime = certActiveBeginTime;
} public Date getCert_active_endTime() {
return cert_active_endTime;
} public void setCert_active_endTime(Date certActiveEndTime) {
cert_active_endTime = certActiveEndTime;
} public Blob getCert_content() {
return cert_content;
} public void setCert_content(Blob certContent) {
cert_content = certContent;
} public String getCert_apply_ref() {
return cert_apply_ref;
} public void setCert_apply_ref(String certApplyRef) {
cert_apply_ref = certApplyRef;
} public Long getCert_apply_seq() {
return cert_apply_seq;
} public void setCert_apply_seq(Long certApplySeq) {
cert_apply_seq = certApplySeq;
}}
难道真要整这个了?
Caused by: java.io.StreamCorruptedException: invalid stream header
一个可能的原因是jdk的bug
CertApply 你这个类有没实现序列化接口啊?
CertApply 类是什么,贴出来看看
对于写错,是对应。
spring有操作blob的方法。
这个回答应该不错。。LZ有不明白的就Google/baidu吧
打死都进不去
Blob字段或Clob字段来存储二进制图片、流媒体或文件。现就将在实际开发中遇到的问题及解决方法告之。一、问题需求: 1.在持久化类中字段该用什么类型?
2.在Struts中文件对应的数据类型是什么?
3.在Hibernate中字段对应的类型是什么?
4.如何在Spring中处理这些文件?二、解决方法: 1.在数据库中这些文件最终是以字节的形式存储二进制对象,所以在持久化类中将相应的属性定义为byte[]类型。 2.在Struts中可以使用<html:file property="" />标签来上传文件,所以与之对应的ActionForm的属性类型为:
FormFile(org.apache.struts.upload.FormFile)类型,即使是使用了动态Form同理也是使用该类型.
提示:同时要将form标签修改为<html:form action="/Action.do" method="post" enctype="multipart/form-data">
以支持文件上传后取得上传数据。在给持久对象赋值时只需调用(FormFile) form.get("property")).getFileData();
方法即可返回byte[]。 3.在Hibernate中文件列对应的类型可以是org.springframework.orm.hibernate3.support.BlobByteArrayType,
org.springframework.orm.hibernate3.support.ClobStringType、clob、blob、binary。什么时候用BlobBYteArrayType
什么时候用ClobStringType?一般如果要处理的对象是数据库字段类型是blob时(主要是图片,二进制对象等),
映射文件设置为:org.springframework.orm.hibernate3.support.BlobByteArrayType 数据库字段是clob(大文本对象)
类型时,要将java的属性的类型定为String,映射文件设置为: org.springframework.orm.hibernate3.support.ClobStringType。 4.如果在spring上要使用Struts中自带的上传功能必须在spring的配置文件中加以声明.否者将会出现?
簀ava.lang.IllegalStateException: No LobHandler found for configuration - lobHandler property
must be set on LocalSessionFactoryBean异常。配置如下: (1).声明一个处理句柄:
<bean id="lobHandler" class="org.springframework.jdbc.support.lob.DefaultLobHandler" lazy-init="true" />
(2).在sessionFactory中注入lobHandler:
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="lobHandler" ref="lobHandler"/>
</bean> 提示: 指定lobHandler时,对于MySQL、DB2、MS SQL Server、Oracle 10g,使用DefaultLobHandler即可,而Oracle 9i,
则可以使用OracleLobHandler。因为Oracle9i处理lob的方式和不太一样,所以这里要用spring提供的SimpleNativeJdbcExtractor.处理Oracle9i lob类型的特殊声明:<bean id="nativeJdbcExtractor" lazy-init="true" class="org.springframework.jdbc.support.nativejdbc.
SimpleNativeJdbcExtractor"/><bean id="lobHandler" lazy-init="true" class="org.springframework.jdbc.support.lob.OracleLobHandler">
<property name="nativeJdbcExtractor">
<ref bean="nativeJdbcExtractor"/>
</property>
</bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!-- 为处理Blob类型字段的句柄声明 -->
<property name="lobHandler">
<ref local="lobHandler" />
</property>
</bean>同时还应该使用对应的JDBC驱动。Clob字段定义:<property name="属性名" column="列名" type="org.springframework.orm.hibernate.support.ClobStringType"
length="1048"/>这里的length是指字节,最大可以到2G.该字段在java对象中声明为String类型。 如果使用的是mysql数据库其默认的上传文件大小只有1047552字节:如果上传的文件大于1047552字节则会出现异常
org.springframework.jdbc.UncategorizedSQLException: You can change this value on the server by setting
the max_allowed_packet' variable.根据提示可以修改mysql数据库的max_allowed_packet属性大小。
打开my.ini文件中找到# SERVER SECTION后在port=3306下面加上max_allowed_packet=?M 修改完后重启mysql服务即可成功上传。
===============罪过罪过,copy form http://xinzhiz.javaeye.com/blog/111731