ssh简单问题:调用NewsDAO里面操作数据库的方法出错,
简单描述一下我的相关代码: NewsAction:
public class NewsAction extends DispatchAction { //删除信息
public ActionForward deleteNews(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) { String nids[] = request.getParameterValues("nid");
int cid = -1;
int nid = Integer.parseInt(nids[0]);
newsDao.findNewByNid(nid);
............
applicationContext.xml <bean name="/news" class="com.aso.struts.action.NewsAction"
abstract="false" lazy-init="default" autowire="default"
dependency-check="default">
<property name="newsDao">
<ref bean="NewsDAO" />
</property>
<property name="newsPaging">
<ref bean="NewsPaging" />
</property>
</bean> NewsDAO:
public News findNewByNid(int nid)
{
log.debug("getting News instance with nid");
try {
News instance = (News) getHibernateTemplate().find("from News as news where news.nid="+nid);
return instance;
} catch (RuntimeException re) {
log.error("get failed", re);
throw re;
}
} ---------------------运行报错位置------------------------
newsDao.findNewByNid(nid); ---------------------报错信息---------------------------- 严重: Servlet.service() for servlet action threw exception
java.lang.ClassCastException: java.lang.String
at org.hibernate.type.TimestampType.isEqual(TimestampType.java:77)
at org.hibernate.type.NullableType.isEqual(NullableType.java:160)
at org.hibernate.type.AbstractType.isSame(AbstractType.java:104)
at org.hibernate.type.AbstractType.isDirty(AbstractType.java:70)
at org.hibernate.type.NullableType.isDirty(NullableType.java:186)
at org.hibernate.type.TypeFactory.findDirty(TypeFactory.java:476)
at org.hibernate.persister.entity.AbstractEntityPersister.findDirty(AbstractEntityPersister.java:2803)
at org.hibernate.event.def.DefaultFlushEntityEventListener.dirtyCheck(DefaultFlushEntityEventListener.java:467)
at org.hibernate.event.def.DefaultFlushEntityEventListener.isUpdateNecessary(DefaultFlushEntityEventListener.java:190)
at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:113)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:195)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:76)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:985)
at org.springframework.orm.hibernate3.HibernateAccessor.flushIfNecessary(HibernateAccessor.java:390)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:373)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:840)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:836)
at com.aso.dao.NewsDAO.findByProperty(NewsDAO.java:92)
at com.aso.dao.NewsDAO.findByWriter(NewsDAO.java:104)
at com.aso.struts.action.NewsAction.deleteNews(NewsAction.java:74)
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 org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at org.apache.struts.actions.LookupDispatchAction.execute(LookupDispatchAction.java:150)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
我是自学SSH的,昨天遇到这个问题,想了很久都不知道哪儿错了,请指教
简单描述一下我的相关代码: NewsAction:
public class NewsAction extends DispatchAction { //删除信息
public ActionForward deleteNews(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) { String nids[] = request.getParameterValues("nid");
int cid = -1;
int nid = Integer.parseInt(nids[0]);
newsDao.findNewByNid(nid);
............
applicationContext.xml <bean name="/news" class="com.aso.struts.action.NewsAction"
abstract="false" lazy-init="default" autowire="default"
dependency-check="default">
<property name="newsDao">
<ref bean="NewsDAO" />
</property>
<property name="newsPaging">
<ref bean="NewsPaging" />
</property>
</bean> NewsDAO:
public News findNewByNid(int nid)
{
log.debug("getting News instance with nid");
try {
News instance = (News) getHibernateTemplate().find("from News as news where news.nid="+nid);
return instance;
} catch (RuntimeException re) {
log.error("get failed", re);
throw re;
}
} ---------------------运行报错位置------------------------
newsDao.findNewByNid(nid); ---------------------报错信息---------------------------- 严重: Servlet.service() for servlet action threw exception
java.lang.ClassCastException: java.lang.String
at org.hibernate.type.TimestampType.isEqual(TimestampType.java:77)
at org.hibernate.type.NullableType.isEqual(NullableType.java:160)
at org.hibernate.type.AbstractType.isSame(AbstractType.java:104)
at org.hibernate.type.AbstractType.isDirty(AbstractType.java:70)
at org.hibernate.type.NullableType.isDirty(NullableType.java:186)
at org.hibernate.type.TypeFactory.findDirty(TypeFactory.java:476)
at org.hibernate.persister.entity.AbstractEntityPersister.findDirty(AbstractEntityPersister.java:2803)
at org.hibernate.event.def.DefaultFlushEntityEventListener.dirtyCheck(DefaultFlushEntityEventListener.java:467)
at org.hibernate.event.def.DefaultFlushEntityEventListener.isUpdateNecessary(DefaultFlushEntityEventListener.java:190)
at org.hibernate.event.def.DefaultFlushEntityEventListener.onFlushEntity(DefaultFlushEntityEventListener.java:113)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEntities(AbstractFlushingEventListener.java:195)
at org.hibernate.event.def.AbstractFlushingEventListener.flushEverythingToExecutions(AbstractFlushingEventListener.java:76)
at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:26)
at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:985)
at org.springframework.orm.hibernate3.HibernateAccessor.flushIfNecessary(HibernateAccessor.java:390)
at org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:373)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:840)
at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:836)
at com.aso.dao.NewsDAO.findByProperty(NewsDAO.java:92)
at com.aso.dao.NewsDAO.findByWriter(NewsDAO.java:104)
at com.aso.struts.action.NewsAction.deleteNews(NewsAction.java:74)
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 org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at org.apache.struts.actions.LookupDispatchAction.execute(LookupDispatchAction.java:150)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
我是自学SSH的,昨天遇到这个问题,想了很久都不知道哪儿错了,请指教
楼主【xiangdeweiwangfengg】截止到2008-07-16 08:13:34的历史汇总数据(不包括此帖):
发帖的总数量:16 发帖的总分数:660 每贴平均分数:41
回帖的总数量:53 得分贴总数量:21 回帖的得分率:39%
结贴的总数量:15 结贴的总分数:660
无满意结贴数:0 无满意结贴分:0
未结的帖子数:1 未结的总分数:0
结贴的百分比:93.75 % 结分的百分比:100.00%
无满意结贴率:0.00 % 无满意结分率:0.00 %
值得尊敬
---------------------------------------------------------应该是对的,我是用Hibernate Reverse Engineering 一对一的根据数据库表的字段叛向工程的,
肯定没问题
private Ncategory ncategory;
private String ntitle;
private String writer;
private String imgPath;
private String content;
private Date issueTime;
private Integer pcId;
private Integer ncount;
......
问题不是在这里,不过仍然谢谢您
at com.aso.dao.NewsDAO.findByWriter(NewsDAO.java:104)
at com.aso.struts.action.NewsAction.deleteNews(NewsAction.java:74) -->at com.aso.dao.NewsDAO.findNewByNid(NewsDAO.java:104)
at com.aso.struts.action.NewsAction.deleteNews(NewsAction.java:74) 刚才发贴的时候该了一下
--------------------我用的是sqlserver数据库-----------------------------------------
News instance = (News) getHibernateTemplate().find("from News as news where news.nid="+nid);
这句换成SESSION试试。
????????getHibernateTemplate().find("from News as news where news.nid="+nid);
返回单个对象???就算是单个对象,也应该是用(News)(getHibernateTemplate().find("from News as news where news.nid="+nid).get(0))这样来取的吧???