java - 請(qǐng)教hql問(wèn)題,坑了我一天了
問(wèn)題描述
@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;}
這是我操作數(shù)據(jù)庫(kù)的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); }}
這邊是我進(jìn)行調(diào)用
本來(lái)昨天晚上是可以用的,要不知道今天怎么回事,一直不行,debug 執(zhí)行到 query.setParameter(0, ka);這一句后就一直跳到別的sourse中,我就直接點(diǎn)擊調(diào)到下一個(gè)斷點(diǎn),就結(jié)束了,控制臺(tái)也沒(méi)報(bào)錯(cuò),但數(shù)據(jù)庫(kù)也沒(méi)有變化,不知道是什么原因,求大神們告知,非常感謝。。。
問(wèn)題解答
回答1:謝謝各位大神們的幫忙,我已經(jīng)解決了,hql用問(wèn)號(hào)竟然不可以,要用冒號(hào)才可以,我也是看不懂
回答2:單步調(diào)試吧 先把hql的別名去掉
回答3:先觀察下t的值,很有可能是滿足了這個(gè)條件Integer.parseInt(t)<Integer.parseInt(time)
返回了空值,因此數(shù)據(jù)庫(kù)中的數(shù)據(jù)才未發(fā)生變動(dòng)。如果不是,再排查自己其它相關(guān)代碼有沒(méi)有不妥的地方,更改過(guò)來(lái)。另外,不知道你的hql語(yǔ)句是否正確,我所了解的應(yīng)該這么寫,比如from Student s where s.id=? and s.name=?
