java - did not match expected type spring framework error -


i have service built on spring framework wondering why have exception though sending integer service

error [io.undertow.request] (default task-13) ut005023: exception handling request /updateuseranswer/11: org.lightadmin.core.view.exceptions.badrequestexception: org.springframework.web.util.nestedservletexception: request processing failed; nested exception java.lang.illegalargumentexception: parameter value [11] did not match expected type [java.lang.integer (n/a)]

here controller

@requestmapping(value = "/updateuseranswers/{userid}", method = requestmethod.put)     public response updateuseranswer(@pathvariable("userid") long userid,             @requestbody @valid useranswer useranswer) {          useranswerservice.updateuseranswer(userid, useranswer);          hashmap<string, object> response = new hashmap<>();         response.put("messages", null);         response.put("success", boolean.valueof(true));         return response.instance().friendlyname("user-answer-updated").object(response).statuscode(httpstatus.ok);     } 

here service :

public void updateuseranswer(long userid,useranswer useranswer) {      list<useranswer> currentuseranswer = useranswerrepo.getuseranswers(userid, useranswer.getanswerid().longvalue(),null);     currentuseranswer.get(0).setlabel(useranswer.getlabel());             list<useranswerfield> fieldslist =  new arraylist<useranswerfield>();       (useranswerfield useranswerfield : useranswer.getanswerfields()) {         useranswerfield currentuseranswerfield = useranswerfieldrepo.getuseranswerfield(useranswerfield.getfieldid());         if (currentuseranswerfield != null) {             currentuseranswerfield.setfield(useranswerfield.getfield());             currentuseranswerfield.settypeid(useranswerfield.gettypeid());             fieldslist.add(currentuseranswerfield);             //useranswerfieldrepo.save(currentuseranswerfield);         }                }        currentuseranswer.get(0).setanswerfields(fieldslist);      useranswerrepo.save(currentuseranswer.get(0)); }    

repository :

public list<useranswer> getuseranswers(long userid,long answerid ,string pagetype) {     try {         string qlstring = ""                 + " select sf useranswer sf "                 + " "                 + " sf.userid = :userid ";         if(pagetype != null){             qlstring+= " ,  sf.type=:type ";         }         if(answerid != null){             qlstring+= " , sf.answerid=:answerid ";         }         qlstring+=" order sf.insertiondate";          query query = getentitymanagerfactory().createquery(qlstring);         query.setparameter("userid", userid);         if(pagetype != null){             query.setparameter("type", pagetype);         }         if(answerid != null){             query.setparameter("answerid", answerid);         }         return (list<useranswer>) query.getresultlist();     } catch (javax.persistence.noresultexception e) {         return null;     } } 

can me out ? in advance

the error happens @ query.setparameter("userid", userid); because you're trying set long when hqlquery expecting integer.

solutions :

  • change type long -> integer controller repository

  • use .intvalue() (more quick fix solution)

  • change ids in entities long type.


Comments