Bueno, la pregunta casi dice todo. Usando JPARepository ¿cómo actualizo una entidad?¿Cómo actualizo una entidad usando spring-data-jpa?
JPARepository tiene solo un método de guardar, que no me dice si es crear o actualizar realmente. Por ejemplo, insertar un objeto simple al usuario de base de datos, que tiene tres campos: nombre y apellidos y edad:
@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;
}
}
Entonces simplemente "Guardar", que en este momento es una inserción realidad:
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, todo está bien. Ahora quiero actualizar a este usuario, digamos cambiar su edad. Bien, podría usar una consulta para QueryDSL o NamedQuery, lo que sea. Pero, considerando que solo quiero usar spring-data-jpa y el JPARepository, ¿cómo puedo decirle que en lugar de insertar quiero hacer una actualización?
Específicamente, ¿cómo le digo a spring-data-jpa que los usuarios que tienen el mismo nombre de usuario y nombre son en realidad IGUALES y que se supone que debe actualizar la entidad. Anular Iguales no funcionó.
¡Gracias!
¿Estás seguro de que el ID se reescribe cuando se guarda un objeto existente en la base de datos ?? Nunca tuve esto en mi proyecto tbh –
@ByronVoorbach yup tienes razón, acabo de probar esto. actualice la pregunta también, thx – Eugene
Hola amigo, puedes mirar este enlace http://stackoverflow.com/questions/24420572/update-or-saveorupdate-in-crudrespository-is- there-any-options-available puedes ser un enfoque como saveOrUpdate() – ibrahimKiraz