recherche

Maison  >  Questions et réponses  >  le corps du texte

java - J'ai une question hql et cela me frustre depuis un jour.

@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;
}

C'est mon hql pour faire fonctionner la base de données

@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);
    }

}

Je passe l'appel

À l'origine, il était disponible hier soir, mais si vous ne savez pas ce qui s'est passé aujourd'hui, cela n'a toujours pas fonctionné. L'exécution du débogage est allée à query.setParameter(0, ka); . Je viens de cliquer pour l'ajuster. Le prochain point d'arrêt est terminé. La console ne signale pas d'erreur, mais la base de données ne change pas. Merci beaucoup. . .

高洛峰高洛峰2871 Il y a quelques jours477

répondre à tous(3)je répondrai

  • 某草草

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

    Merci à tous pour votre aide. Je l'ai résolu. Il n'est pas possible d'utiliser des points d'interrogation en hql. Vous devez utiliser des deux-points. Je ne comprends pas non plus.

    répondre
    0
  • 曾经蜡笔没有小新

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

    Débogage en une seule étape. Supprimez d'abord l'alias de hql

    .

    répondre
    0
  • 天蓬老师

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

    Observez d'abord la valeur de t, il est très probable que cette condition soit remplie
    Integer.parseInt(t)<Integer.parseInt(time)

    Une valeur nulle est renvoyée, donc les données de la base de données n'ont pas changé.
    Sinon, vérifiez s'il y a un problème avec vos autres codes associés et modifiez-les.
    De plus, je ne sais pas si votre déclaration hql est correcte. D'après ce que j'ai compris, elle devrait être écrite comme ceci, par exemple
    from Student swhere s.id= and s.name=?

    répondre
    0
  • Annulerrépondre