ওয়েল প্রশ্ন বেশ কিছু বলেন। জেআরপোসিটোরি ব্যবহার করে কীভাবে আমি কোনও সত্তা আপডেট করব?
জর্পোপোসিটোরিতে কেবল একটি সংরক্ষণের পদ্ধতি রয়েছে যা এটি আসলে তৈরি বা আপডেট হয় কিনা তা আমাকে জানায় না। উদাহরণস্বরূপ, আমি ডাটাবেসের ব্যবহারকারী, যা তিনটি ক্ষেত্র রয়েছে একটি সহজ অবজেক্ট ঢোকান: firstname
, lastname
এবং 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;
}
}
তারপরে আমি কেবল কল করি save()
যা এই মুহুর্তে আসলে ডাটাবেসে একটি সন্নিবেশ:
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);
এ পর্যন্ত সব ঠিকই. এখন আমি এই ব্যবহারকারীকে আপডেট করতে চাই, বলুন তার বয়স পরিবর্তন করুন। এই উদ্দেশ্যে আমি কোয়েরিএসডিএল বা নেমডকুইয়ারি, যাই হোক না কেন, একটি প্রশ্ন ব্যবহার করতে পারি। তবে, আমি কেবল স্প্রিং-ডেটা-জেপিএ এবং জেআরএপোসিটোরি ব্যবহার করতে চাই তা বিবেচনা করে আমি কীভাবে এটি বলব যে একটি সন্নিবেশের পরিবর্তে আমি একটি আপডেট করতে চাই?
বিশেষত, আমি কীভাবে স্প্রিং-ডেটা-জেপাকে বলব যে একই ব্যবহারকারীর নাম এবং প্রথম নাম ব্যবহারকারীরাই আসলে একুয়াল এবং বিদ্যমান সত্তাটি আপডেট হওয়ার কথা? ওভাররাইডিং সমান এই সমস্যাটির সমাধান করেনি।