ich mit Spring-Boot auf Gradle w/JPA
Ich habe das Folgeobjekt: {"id":123,"year":"123","name":"Xxxx","userKey": XXXXX}
Ich werde POST nur "Namen" und "Jahr" und den MySQL-Trigger Erzeugen Sie den "userKey", BEVOR Sie die Daten einfügen.
Wenn ich rep.saveAndFlush(object)
aufrufen, werde ich das neue Objekt an den Benutzer mit dem userKey zurückgeben.
Aber es ist nicht passiert! :/ Wenn ich die POST { "name" : "Teste" , "year" : 30}
das System senden {"id":37,"year":"30","name":"Teste","userKey":null}
zurück, wenn ich versuche, die ID als Parameter zu erhalten vorbei, es {"id":37,"year":"30","name":"Teste","userKey":"VVUR"}
Warum gibt ??
Wie kann ich das Objekt mit Ihren vollständigen Daten zurückgeben?
Ich habe versucht:
testeRepository.saveAndFlush(teste);
return new ResponseEntity<> (teste, HttpStatus.CREATED);
&
testeRepository.saveAndFlush(teste);
testeRepository.flush(teste);
return new ResponseEntity<> (teste, HttpStatus.CREATED);
&
testeRepository.saveAndFlush(teste);
testeRepository.flush(teste);
teste = testeRepository.findOne(teste.getId()); /* Same as GET */
return new ResponseEntity<> (teste, HttpStatus.CREATED);
Also .. ist nicht funktioniert noch! :(Gibt nur die ID und Null auf userKey zurück!
Verwenden Sie em.refresh? –
Wenn Sie keine Aktualisierung erzwingen wollen, um das einzufügende einzufügen, benötigen Sie einen Mechanismus, damit die Datenbanken Ihrem Provider/Ihrer Entität mitteilen können, was generiert wurde. Dies liegt außerhalb des Geltungsbereichs von JPA und wird daher provider-/datenbankspezifisch sein. Einige haben jedoch Funktionen, die Sie möglicherweise ändern können, wie z. B. die EclipseLink-Richtlinie für die Rückgabe. Http://www.eclipse.org/ecclipselink/documentation/2.5/jpa/ extensions/a_returninsert.htm # CIHHEGJE – Chris
@NeilStockton Ich habe keine .refresh() Methode auf TesteRepository, wo ich es finden kann? –