Ну, вопрос в значительной степени говорит обо всем. Использование JPARepository как обновить объект?Как обновить объект, используя spring-data-jpa?
У JPARepository есть только метод сохранения, который не говорит мне, действительно ли это создание или обновление. Например, вставить простой объект в базе данных пользователя, который имеет три поля: Имя и фамилия и возраст:
@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;
}
}
Тогда я просто «сохранить», который на данный момент является вставка на самом деле:
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);
Хорошо, все хорошо. Теперь я хочу обновить этого пользователя, скажем, изменить его возраст. Ну, я мог бы использовать Query для QueryDSL или NamedQuery, независимо от того. Но, учитывая, что я просто хочу использовать spring-data-jpa и JPARepository, как я могу сказать, что вместо вставки я хочу сделать обновление?
В частности, как сообщить spring-data-jpa, что пользователи, имеющие одинаковое имя пользователя и имя, фактически EQUAL и что предполагается обновить объект. Переопределение равных не сработало.
Спасибо!
Вы уверены, что ID перезаписывается при сохранении существующего объекта в базе данных ?? Никогда не было этого на моем проекте tbh –
@ByronVoorbach, вы правы, просто проверили это. обновите вопрос также, thx – Eugene
Привет, друг, вы можете посмотреть эту ссылку http://stackoverflow.com/questions/24420572/update-or-saveorupdate-in-crudrespository-is-there-any-options-available, вы можете быть подход вроде saveOrUpdate() – ibrahimKiraz