java序列化相关问题 查询数据库的时候出现这个异常,我将查询到的结果封装到对象中。
org.springframework.dao.TransientDataAccessResourceException:PreparedStatementCallbac...
org.springframework.dao.TransientDataAccessResourceException: PreparedStatementCallback; SQL [select * from gentie t where t.topic_id=?]; Invalid argument value: java.io.NotSerializableException; nested exception is java.sql.SQLException: Invalid argument value: java.io.NotSerializableException
at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:107)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:602)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:636)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:665)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:673)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:713)
at org.springframework.jdbc.core.JdbcTemplate.queryForList(JdbcTemplate.java:796)
at org.springframework.jdbc.core.simple.SimpleJdbcTemplate.queryForList(SimpleJdbcTemplate.java:235)
at com.bishe.servce.impl.TieZiImpl.getGenTie(TieZiImpl.java:101)
at com.bishe.control.TieZiAction.getTie(TieZiAction.java:112)
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.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:174)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:421)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:409)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at com.bishe.control.SessionFilter.doFilter(SessionFilter.java:52) 展开
at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:107)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:602)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:636)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:665)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:673)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:713)
at org.springframework.jdbc.core.JdbcTemplate.queryForList(JdbcTemplate.java:796)
at org.springframework.jdbc.core.simple.SimpleJdbcTemplate.queryForList(SimpleJdbcTemplate.java:235)
at com.bishe.servce.impl.TieZiImpl.getGenTie(TieZiImpl.java:101)
at com.bishe.control.TieZiAction.getTie(TieZiAction.java:112)
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.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:174)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:421)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:409)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at com.bishe.control.SessionFilter.doFilter(SessionFilter.java:52) 展开
展开全部
首先,解释系列化知识:
Java序列化(系列化)机制可以被写入一个字节流的一个实例对象的状态信息,因此它可以透过插座,或持久存储到数据库,或者文件系统,在需要时,根据在字节流中的信息来重构一个相同的对象。序列化机制在Java技术具有广泛的应用,EJB,RMI等作为依据。
实现类java.io.ObjectOutputStream中java.io.ObjectInputStream中的类的序列化机制。序列(序列化)对象,实例化一个ObjectOutputStream对象,然后调用writeObject()方法;反序列化(反序列化)时,ObjectInputStream的对象实例,然后调用readObject()方法。
高于你的错误在于一个或几个没有序列化的数据,导致没有办法创建一个输出流,导致发生java.io.NotSerializableException。
序列化的原因,我的猜测是,因为你的数据里面存在一个基于对象的数据,但对象不实现系列化。例如:如果你有一个地址字段,这个字段是一个类地址说明地址,这可能是全省的财产,城市,街道,等,或一些getter和setter方法,如果这个类没有实现系列化,通常这的问题。
毕竟,没有看到该程序,我猜,检查程序或进一步讨论的问题。
Java序列化(系列化)机制可以被写入一个字节流的一个实例对象的状态信息,因此它可以透过插座,或持久存储到数据库,或者文件系统,在需要时,根据在字节流中的信息来重构一个相同的对象。序列化机制在Java技术具有广泛的应用,EJB,RMI等作为依据。
实现类java.io.ObjectOutputStream中java.io.ObjectInputStream中的类的序列化机制。序列(序列化)对象,实例化一个ObjectOutputStream对象,然后调用writeObject()方法;反序列化(反序列化)时,ObjectInputStream的对象实例,然后调用readObject()方法。
高于你的错误在于一个或几个没有序列化的数据,导致没有办法创建一个输出流,导致发生java.io.NotSerializableException。
序列化的原因,我的猜测是,因为你的数据里面存在一个基于对象的数据,但对象不实现系列化。例如:如果你有一个地址字段,这个字段是一个类地址说明地址,这可能是全省的财产,城市,街道,等,或一些getter和setter方法,如果这个类没有实现系列化,通常这的问题。
毕竟,没有看到该程序,我猜,检查程序或进一步讨论的问题。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你传给sql拼接的参数是从一个对象里获得的,而这个参数类型是不可序列化的。造成出错
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-05-16
展开全部
抛的SQL异常,要看代码才知道
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sql 报的是无效的参数值,你看看参数是不是有问题,或者有没有值,类型什么的对不对
更多追问追答
追问
参数类型都和数据库是一致的,没问题
追答
你看看在传入sql中时,那个参数是否有值
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
抛的SQL异常,要看代码才知道
更多追问追答
追问
sql语句没问题 我直接用sql语句就可以查询到结果
追答
那你是不是程序执行后接口没有关呢,代码发来看看
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询