Nun, die Frage sagt so ziemlich alles. JPAR-Repository verwenden Wie aktualisiere ich eine Entität?Wie aktualisiere ich eine Entität mit spring-data-jpa?
JPARepository hat nur eine speichern Methode, die mir nicht sagen, ob es tatsächlich erstellen oder zu aktualisieren ist. Zum Beispiel füge ich ein einfaches Objekt in der Datenbank Benutzer, die drei Felder hat: Vorname und Nachname und Alter:
@Entity
public class User {
private String firstname;
private String lastname;
//Setters and getters for age omitted, but they are the same as with firstname and lastname.
private int age;
@Column
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
@Column
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
private long userId;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
public long getUserId(){
return this.userId;
}
public void setUserId(long userId){
this.userId = userId;
}
}
Dann einfach ich „retten“, die an dieser Stelle ein Einsatz tatsächlich ist:
User user1 = new User();
user1.setFirstname("john"); user1.setLastname("dew");
user1.setAge(16);
userService.saveUser(user1);// This call is actually using the JPARepository: userRepository.save(user);
Ok, alles ist gut. Jetzt möchte ich diesen Benutzer aktualisieren, sagen Sie ändern Sie sein Alter. Nun, ich könnte eine Query für diese entweder QueryDSL oder NamedQuery, was auch immer. Aber wenn ich bedenke, dass ich nur spring-data-jpa und das JPAR-Repository verwenden möchte, wie kann ich dann sagen, dass ich anstelle einer Einfügung ein Update machen möchte?
Genau wie sage ich Spring-Data-jpa, dass Benutzer, die den gleichen Benutzernamen und Vorname haben, tatsächlich gleich sind und dass es die Entität aktualisieren soll. Overriding Equals hat nicht funktioniert.
Vielen Dank!
Sind Sie sicher, dass die ID neu geschrieben wird, wenn Sie ein bestehendes Objekt in der Datenbank speichern ?? Hatte das nie auf meinem Projekt tbh –
@ByronVoorbach yup du hast recht, nur getestet. Update die Frage auch, thx – Eugene
Hallo Freund, Sie können diesen Link http://StackOverflow.com/Questions/24420572/update-or-Saveorupdate-in-Crudrespository-is-there-any-options-Verfügbar Sie können ein sein Ansatz wie saveOrUpdate() – ibrahimKiraz