Reputation: 417
I want to update a record associated with a primary key using Spring-JPA.
GroupChatHeartBeat groupChatHeartBeat=new GroupChatHeartBeat();
groupChatHeartBeat.setId(user.getId());
groupChatHeartBeat.setGender(user.getGender());
groupChatHeartBeat.setHeartBeatTime(new Date());
groupChatHeartBeat.setUrl(userPhoto.getSrcBig());
groupChatHeartBeatRepository.save(groupChatHeartBeat);
where GroupChatHeartBeat is declared as Entity, but doing so it's not replacing with new value. it is showing old value only. My intention is to update the table and if an id exist it should get replaced with new records(like time, gender, url etc ). here is the entity
@Entity
@Table
public class GroupChatHeartBeat implements Serializable {
private static final long serialVersionUID = 1L;
@Id
private Long id;
private Date heartBeatTime;
private String url;
private Gender gender;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public Date getHeartBeatTime() {
return heartBeatTime;
}
public void setHeartBeatTime(Date heartBeatTime) {
this.heartBeatTime = heartBeatTime;
}
public Gender getGender() {
return gender;
}
public void setGender(Gender gender) {
this.gender = gender;
}
}
Upvotes: 1
Views: 7675
Reputation: 2364
Try this :
To update an existing entity in database - You must set the Object Id of new Object to OldObject Id.
i.e. newObject.setId(OldObject.getId())
and then repo.save(newObject)
will update the existing entity in the database.
Entity Class
@Entity
public class GroupChatHeartBeat {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private Date heartBeatTime;
private String url;
public GroupChatHeartBeat() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Date getHeartBeatTime() {
return heartBeatTime;
}
public void setHeartBeatTime(Date heartBeatTime) {
this.heartBeatTime = heartBeatTime;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public GroupChatHeartBeat(Date heartBeatTime, String url) {
this.heartBeatTime = heartBeatTime;
this.url = url;
}
@Override
public String toString() {
return "GroupChatHeartBeat{" +
"id=" + id +
", heartBeatTime=" + heartBeatTime +
", url='" + url + '\'' +
'}';
}
}
Autowire Repository
@Autowired
private GroupChatHeartBeatRepository groupChatHeartBeatRepository;
Save and Update
// Save New
GroupChatHeartBeat grp = new GroupChatHeartBeat(new Date(), "http://www.google.com");
groupChatHeartBeatRepository.save(grp);
groupChatHeartBeatRepository.findAll().forEach(System.out::println);
// Update same object and save-> updates value of existing in database
grp.setUrl("http://spring.io");
groupChatHeartBeatRepository.save(grp);
groupChatHeartBeatRepository.findAll().forEach(System.out::println);
// Create New object, set Id of new object as old object and save-> updates value of existing in database
GroupChatHeartBeat grpUpdated = new GroupChatHeartBeat(new Date(638893800000L), "https://github.com/RawSanj");
grpUpdated.setId(grp.getId());
groupChatHeartBeatRepository.save(grpUpdated);
groupChatHeartBeatRepository.findAll().forEach(System.out::println);
Checkout the Complete Project in my GitHub repository.
Upvotes: 2