Soru hemen hemen her şeyi söylüyor. JPARepository kullanarak bir varlığı nasıl güncelleyebilirim?
JPARepository'nin sadece bir kaydetme yöntemi vardır, bu gerçekten oluşturup güncellemediğini söylemez. Mesela ben üç alanı vardır veritabanı kullanıcı, basit bir nesne ekleyin: firstname
, lastname
ve 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;
}
}
Sonra ben sadece save()
, bu noktada aslında veritabanına bir insert olduğunu çağırmak :
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 uzak çok iyi. Şimdi bu kullanıcıyı güncellemek istiyorum, diyelim yaşını değiştir. Bu amaçla bir Query, QueryDSL veya NamedQuery kullanabilirsiniz. Ancak, sadece spring-data-jpa ve JPARepository kullanmak istediğimi düşünürsek, bir ekleme yerine güncelleme yapmak istediğimi nasıl anlarım?
Özellikle, spring-data-jpa'ya aynı kullanıcı adı ve adıyla kullanıcıların aslında EQUAL olduğunu ve mevcut varlığın güncellenmesi gerektiğini nasıl söyleyebilirim? Eşit değerlerin geçersiz kılınması bu sorunu çözmedi.