搜尋

首頁  >  問答  >  主體

java - 請教hql問題,坑了我一天了

@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中,我就直接點擊調到下一個斷點,就結束了,控制台也沒報錯,但資料庫也沒有變化,不知道是什麼原因,求大神們告知,非常感謝。 。 。

高洛峰高洛峰2872 天前480

全部回覆(3)我來回復

  • 某草草

    某草草2017-05-16 13:25:28

    謝謝各位大神們的幫忙,我已經解決了,hql用問號竟然不可以,要用冒號才可以,我也是看不懂

    回覆
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 13:25:28

    單步調試吧 先把hql的別名去掉

    回覆
    0
  • 天蓬老师

    天蓬老师2017-05-16 13:25:28

    先觀察下t的值,很有可能是滿足了這個條件
    Integer.parseInt(t)

    傳回了空值,因此資料庫中的資料才未發生變動。
    如果不是,再排查自己其它相關代碼有沒有不妥的地方,更改過來。
    另外,不知道你的hql語句是否正確,我所了解的應該這麼寫,比如
    from Student s where s.id=? and s.name=?

    回覆
    0
  • 取消回覆