Vâng, câu hỏi khá nhiều nói lên tất cả. Sử dụng JPARep repository, làm cách nào để cập nhật một thực thể?
JPARep repository chỉ có một phương thức lưu , nó không cho tôi biết nếu nó thực sự tạo hoặc cập nhật. Ví dụ, tôi chèn một đối tượng đơn giản cho người dùng cơ sở dữ liệu, trong đó có ba lĩnh vực: firstname
, lastname
và age
:
@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;
}
}
Sau đó, tôi chỉ cần gọi save()
, mà tại thời điểm này thực sự là một chèn vào cơ sở dữ liệu:
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);
Càng xa càng tốt. Bây giờ tôi muốn cập nhật người dùng này, nói thay đổi tuổi của anh ấy. Với mục đích này, tôi có thể sử dụng Truy vấn, hoặc QueryDSL hoặc NamedQuery, bất cứ điều gì. Nhưng, xem xét tôi chỉ muốn sử dụng spring-data-jpa và JPARep repository, làm thế nào để tôi nói với nó rằng thay vì chèn tôi muốn thực hiện cập nhật?
Cụ thể, làm thế nào để tôi nói với spring-data-jpa rằng người dùng có cùng tên người dùng và tên thực sự là THIẾT BỊ và thực thể hiện có phải được cập nhật? Ghi đè bằng không giải quyết được vấn đề này.