在使用SSH(Strut2+Spring4+Hibernate4)时,用set方法向数据库写入数据时service实现层报错,希望大大佬们帮忙看看,谢谢!

JSC_1994 2017-12-10 01:23:28
action类:
@RequestMapping(value = "/modifyTouristNickNameByTouristId.do")
public void modifyTouristNickNameByTouristId(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setCharacterEncoding("utf-8");
response.setHeader("Access-Control-Allow-Origin", "*");
int touristId = Integer.parseInt(request.getParameter("touristId"));
String touristNickName = request.getParameter("touristNickName");
boolean b1 = false;
boolean b2 = false;
TouristInfo touristInfo = iTouristDetailInfoService.getTouristInfoByTouristNickName(touristNickName);
if (touristInfo == null){
b1 = iTouristDetailInfoService.modifyTouristNickNameByTouristId(touristId,touristNickName);
b2 = true;
}
JSONObject jsonObject = new JSONObject();
jsonObject.put("modifyStatus",b1);
jsonObject.put("QueryStatus",b2);
Object o = JSONObject.toJSON(jsonObject);
response.getWriter().write(o.toString());
response.getWriter().flush();
response.getWriter().close();
}
service实现类:
@Override
public boolean modifyTouristNickNameByTouristId(int touristId, String touristNickName) {
Boolean b = false;
b = iTouristDetailInfoDao.modifyTouristNickNameByTouristId(touristId,touristNickName);
return b;
}
dao实现类:
@Override
public boolean modifyTouristNickNameByTouristId(int touristId, String touristNickName) {
/**
* set方法出现bug,service层无法返回参数,报错AopUtils.java
* @author JSC
* @time 2017-12-05
*/方法一
/*TouristInfo touristInfo = findTouristInfoByTouristId(touristId);
touristInfo.setTouristNickName(touristNickName);
Boolean b = false;
b = this.saveOrUpdate(touristInfo);
if(b){
return true;
}else{
return false;
}*/
/*方法二:*/
Session session = this.getSession();
String sql = "UPDATE `游客信息` SET `用户名` = ? WHERE `用户ID` = ? AND `是否启用` = '1' AND `游客状态` = '1'";
int i = session.createSQLQuery(sql)
.setParameter(0,touristNickName)
.setParameter(1,touristId)
.executeUpdate();
if(i == 1){
return true;
}else{
return false;
}
}
basedao实现类:
public <T> boolean saveOrUpdate(T t) {
boolean flag = false;
this.hibernateTemplate.saveOrUpdate(t);
flag = true;

return flag;
}
报错信息:tomcat Server并未报错,tomcat localhost log报错,信息如下:
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:361)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1080)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:75)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:757)
at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2287)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
总结问题描述:
在dao实现类中,方法一在dao层不会出错,但是在把参数返回到service实现层的时候就会出错,单步调试会跳转到AopUtils.java中,然后出想上述错误信息;
方法二用sql方式就不会报错,目前用此方法暂时解决;
希望大大佬们帮忙看看,小弟将不胜感激。
...全文
428 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
JSC_1994 2017-12-10
  • 打赏
  • 举报
回复
您好,您说的事务注入,我加了,如下: @Repository public class TouristDetailInfoServiceImpl implements ITouristDetailInfoService { @Autowired private ITouristDetailInfoDao iTouristDetailInfoDao; ...... dao的实现层是可以返回到service实现层的,但是到这就返回不了,然后报错,它会跳转到AopUtils.java中,然而用sql的方式却可以成功返回,搞了好久不知道为啥,求大佬明示。
孟子E章 2017-12-10
  • 打赏
  • 举报
回复
一般是是事物配置问题,或者代码这缺少某个注入。 如使用@Autowired

24,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Apache
社区管理员
  • Apache
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧