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->integercontroller repositoryuse
.intvalue()(more quick fix solution)change ids in entities long type.
Comments
Post a Comment