Comment puis-je mettre à jour une entité à l'aide de spring-data-jpa?

Bien la question dit à peu près tout. À l'aide de JPARepository comment puis-je mettre à jour une entité?

JPARepository a seulement un enregistrer méthode, qui ne me dites pas si c'est de créer ou de mettre à jour en fait. Par exemple, j'ai insérer un Objet simple pour l'Utilisateur de base de données, qui comporte trois champs: prénom et nom et âge:

 @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;
  }
}

Ensuite, j'ai simplement "enregistrer", qui à ce stade est un insert en fait:

 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 tout est bon. Maintenant, je veux mettre à jour cet utilisateur, dire le changement de son âge. Eh bien, je pourrais utiliser une Requête pour que soit QueryDSL ou NamedQuery, que ce soit. Mais, compte tenu que je veux juste utiliser spring-data-jpa et la JPARepository, comment puis-je lui dire qu'au lieu d'un insert je veux faire une mise à jour?

Précisément comment dois-je dire à spring-data-jpa que les utilisateurs qui ont le même nom et prénom sont en fait ÉGAUX et qu'il est censé mettre à jour l'entité. Primordial est égal n'a pas de travail.

Merci!

  • Êtes-vous sûr que l'ID obtient réécrit lorsque vous enregistrez un objet existant dans la base de données?? Jamais eu cela sur mon projet tbh
  • ouais, vous avez raison, juste testé cette. mise à jour de la question aussi, thx
  • Bonjour ami, vous pouvez regarder ce lien stackoverflow.com/questions/24420572/... vous pouvez être une approche comme saveOrUpdate()
InformationsquelleAutor Eugene | 2012-08-09