如何更新与 Spring-JPA 中的主键关联的值
How to update values associated with Primary Key in Spring-JPA
我想使用 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);
其中 GroupChatHeartBeat 被声明为实体,但这样做并没有替换为新值。它仅显示旧值。我的目的是更新 table,如果存在 id,则应将其替换为新记录(如时间、性别、url 等)。这是实体
@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;
}
}
试试这个:
要更新数据库中的现有实体 - 您必须将新对象的对象 ID 设置为旧对象 ID。
即newObject.setId(OldObject.getId())
然后 repo.save(newObject)
将更新数据库中的现有实体。
实体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 存储库
@Autowired
private GroupChatHeartBeatRepository groupChatHeartBeatRepository;
保存并更新
// 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);
检查我的 GitHub 存储库中的 Complete Project。
我想使用 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);
其中 GroupChatHeartBeat 被声明为实体,但这样做并没有替换为新值。它仅显示旧值。我的目的是更新 table,如果存在 id,则应将其替换为新记录(如时间、性别、url 等)。这是实体
@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;
}
}
试试这个:
要更新数据库中的现有实体 - 您必须将新对象的对象 ID 设置为旧对象 ID。
即newObject.setId(OldObject.getId())
然后 repo.save(newObject)
将更新数据库中的现有实体。
实体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 存储库
@Autowired
private GroupChatHeartBeatRepository groupChatHeartBeatRepository;
保存并更新
// 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);
检查我的 GitHub 存储库中的 Complete Project。