@SuppressWarnings("JpaQlInspection")
@Override
public 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)
@ResponseBody
public 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中,我就直接点击调到下一个断点,就结束了,控制台也没报错,但数据库也没有变化,不知道是什么原因,求大神们告知,非常感谢。。。
谢谢各位大神们的帮忙,我已经解决了,hql用问号竟然不可以,要用冒号才可以,我也是看不懂
单步调试吧 先把hql的别名去掉
先观察下t的值,很有可能是满足了这个条件
Integer.parseInt(t)<Integer.parseInt(time)
返回了空值,因此数据库中的数据才未发生变动。
如果不是,再排查自己其它相关代码有没有不妥的地方,更改过来。
另外,不知道你的hql语句是否正确,我所了解的应该这么写,比如
from Student s where s.id=? and s.name=?