2015-05-28 8 views
9

Ich versuche, einige Daten in der Datenbank über eine Abfrage zu beantragen, aber alles, was ich bekommen, ist diese Ausnahme:Parameter mit dieser Position [5] existiert nicht;

HTTP Status 500 - Request processing failed; nested exception is 
org.springframework.dao.InvalidDataAccessApiUsageException: Parameter with that position [5] did 
not exist; nested exception is java.lang.IllegalArgumentException: Parameter with that position [5] 
did not exist 

Gut und das ist mein mein MappingController

@RequestMapping(value="/vacChange", method = RequestMethod.POST) 
public String changedVac(@RequestParam(value = "id", required = true) Integer id, 
         @RequestParam(value = "ort", required = true) String ort, 
         @RequestParam(value = "bereich", required = true) String bereich, 
         @RequestParam(value = "beschreibung", required = true) String beschreibung){ 
vacService.changeVacancyByID(id,gehalt,ort,bereich,beschreibung); 


    return "vacAdmin"; 
} 

ich glaube, ich don ‚t müssen die ServiceClass aufzuschreiben, aber unten ist die ServiceClassImplementation

public void changeVacancyByID(Integer id, String gehalt,String ort,String bereich,String beschreibung){ 
     System.out.println("Edit method called"); 
     VacancyEntity vacEntity = vacancyRepository.findOneById(id); 
     vacancyRepository.updateAttributes(id,gehalt,ort,bereich,beschreibung); 

} 

Last but not least das ist mein Repository:

@Transactional 
@Query (value = "UPDATE vacancy SET salary=?1, location=?2,functionality=?3, description=?4 WHERE id = ?0 ", nativeQuery = true) 
VacancyEntity updateAttributes(Integer id, String gehalt, String ort, String bereich, String beschreibung); 

Antwort

13

Rang nach Parameter mit 1 beginnen, versuchen Sie mit diesem

@Query (value = "UPDATE vacancy SET salary=?1, location=?2,functionality=?3, description=?4 WHERE id = ?5 ", nativeQuery = true) 
VacancyEntity updateAttributes(String gehalt, String ort, String bereich, String beschreibung, Integer id); 

oder, mit unveränderter Methode si gnature

@Query (value = "UPDATE vacancy SET salary=?2, location=?3,functionality=?4, description=?5 WHERE id = ?1 ", nativeQuery = true) 
+0

Ah dank es scheint, dass es das Problem löst, aber jetzt bekomme ich eine „konnte nicht extrahieren ResultSet“ Ausnahme – Stan

+0

für dieses Problem nicht verwandt scheint, sollten Sie eine neue Frage mit den relevanten Daten schreiben (Ausnahme), um um bessere Antworten zu bekommen. –

2

Von diesem reference (Schwerpunkt liegt du):

Parameter zu SQL-Abfragen verwenden, die begrenzt? Charakter. Nur indexierte Parameter werden unterstützt, benannte Parameter werden nicht unterstützt. Der Index kann in dem Begrenzer verwendet werden, d. H. & Theta; 1. Parameterwerte werden in der Abfrage mithilfe der setParameter-API festgelegt. Indizierte Parameter beginnen am Index 1 nicht 0.

So haben Sie Ihre Suche verfeinern:

@Query(value = "UPDATE vacancy SET salary=?2, location=?3,functionality=?4, description=?5 WHERE id = ?1", nativeQuery = true) 

auch sehen, diese tutorial from Oracle

Verwandte Themen