2017-03-18 3 views
0

Ich mache eine kleine Anwendung, wo ich Benutzerdetails mit Spring-Boot speichern kann. Ich habe die Entitäten und ihre entsprechenden Repositories erstellt. Wann auch immer ich eine Post-Anfrage mache, um einen Benutzer die ID des Benutzerobjekts hinzuzufügen, die zum Zeitpunkt des Speicherns in der Datenbank null ist. Diese ID wird in MySQL automatisch generiert (Auto Increment). Von der POST-Anfrage bekomme ich 3 Felder, die Benutzername, E-Mail, Passwort sind. Die Benutzerklasse enthält Felder ID, Benutzername, E-Mail, Passwort. Ich habe die AnmerkungenSpringBoot JPA löst Ausnahme bei der Anforderung von Post

für das ID-Feld hinzugefügt. und die Konstruktoren sind

public User() { } 

public User(String username, String email, String password) { 
    this.username = username; 
    this.email = email; 
    this.password = password; 
} 

Dies ist der Fehler im bekommen. enter image description here

Der Bugprozess enter image description here

meine Userservice Klasse

@Service 
    public class UserService implements UserServiceInterface { 

     @Autowired(required = true) 
     private UserRepository userrepository; 

     @Override 
     public User CreateNewUser(User user) { 
      return userrepository.save(user); 
     } 
} 

meine Usercontroller Klasse

@RestController 
    public class UserController { 

     UserService us = new UserService(); 

     @RequestMapping(value ="/user",method = RequestMethod.POST) 
     public void RegisterUser(   
       @RequestParam(value="username") String username, 
       @RequestParam(value="email") String email, 
       @RequestParam(value="password") String password){ 
      us.CreateNewUser(new User(username,email,password)); 
     } 
} 

Gibt es Gründe, warum ich poste kippe Daten in die Datenbank speichern? Wie überwinde ich das?

+1

ein NPE WO? Jede Ausnahme sollte mit ihrem Stack-Trace gepostet werden, da sie anzeigt, wessen Code verantwortlich ist. Offensichtlich kann ein Objekt an die JPA-API übergeben werden, ohne ein '@ GeneratedValue'-Feld zu setzen, und sein Wert wird im Datenspeicher zugewiesen. –

+0

@NeilStockton Ich habe die Frage bearbeitet – TRomesh

+0

@NeilStockton UserService ist die Klasse, in der alle Funktionen des Benutzers ausgeführt werden . zB Speichern von Benutzerinformationen, Löschen (Basic CRUD) – TRomesh

Antwort

0

Nach dem Durchforsten des Codes habe ich den Fehler gefunden. durch Erstellen einer neuen Instanz von UserService us = new UserService(); wird dies nicht von Spring verwaltet (Spring weiß nichts darüber und kann UserRepository nicht einspeisen - dies verursacht NullPointerException). Anstelle von creting new instace sollte es die UserService-Klasse in diesem Beispiel erweitern.

Verwandte Themen