您的位置:首页技术文章
文章详情页

java - 请教hql问题,坑了我一天了

浏览:66日期:2023-01-01 11:20:24

问题描述

@SuppressWarnings('JpaQlInspection')

@Overridepublic String queryUGI(String openid, String ka) { String hql='from UserGameInformation as ugi where ugi.ka=?0 and ugi.openid=?1'; Session session = this.getSession(); Query query = session.createQuery(hql); query.setParameter(0, ka); query.setParameter(1,openid); UserGameInformation userGameInformation = (UserGameInformation)query.list().get(0); String result=userGameInformation.getTime(); return result;}

这是我操作数据库的hql

@RequestMapping(value = '/summary',method= RequestMethod.POST)

@ResponseBodypublic void summary(HttpServletRequest request){ String ka = request.getParameter('ka'); String time = request.getParameter('time'); HttpSession session = request.getSession(); UserEntity userEntity = (UserEntity) session.getAttribute('user'); String t = userGameInformationService.queryUGI(userEntity.getOpenid(),ka); if(t==''){System.out.println('dkhdhfkdfhkldf');UserGameInformation ugi = new UserGameInformation();ugi.setOpenid(userEntity.getOpenid());ugi.setKa(ka);ugi.setTime(time);userGameInformationService.addUserGameInformation(ugi); } else if(Integer.parseInt(t)<Integer.parseInt(time)){ return; } else {UserGameInformation ugi = userGameInformationService.findUser(userEntity.getOpenid(),ka);ugi.setKa(ka);ugi.setTime(time);ugi.setOpenid(userEntity.getOpenid());userGameInformationService.updateUserGameInformation(ugi); }}

这边是我进行调用

本来昨天晚上是可以用的,要不知道今天怎么回事,一直不行,debug 执行到 query.setParameter(0, ka);这一句后就一直跳到别的sourse中,我就直接点击调到下一个断点,就结束了,控制台也没报错,但数据库也没有变化,不知道是什么原因,求大神们告知,非常感谢。。。

问题解答

回答1:

谢谢各位大神们的帮忙,我已经解决了,hql用问号竟然不可以,要用冒号才可以,我也是看不懂

回答2:

单步调试吧 先把hql的别名去掉

回答3:

先观察下t的值,很有可能是满足了这个条件Integer.parseInt(t)<Integer.parseInt(time)

返回了空值,因此数据库中的数据才未发生变动。如果不是,再排查自己其它相关代码有没有不妥的地方,更改过来。另外,不知道你的hql语句是否正确,我所了解的应该这么写,比如from Student s where s.id=? and s.name=?

标签: java