如何在Spring-JPA中更新与主键关联的值 [英] How to update values associated with Primary Key in Spring-JPA

查看:268
本文介绍了如何在Spring-JPA中更新与主键关联的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用Spring-JPA更新与主键关联的记录.

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);

其中GroupChatHeartBeat被声明为Entity,但这样做并没有替换为新值.它仅显示旧值.我的意图是更新表,如果存在ID,则应将其替换为新记录(如时间,性别,URL等).这是实体

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;
    }

}

推荐答案

尝试一下:

要更新数据库中的现有实体-您必须将新对象的对象ID设置为OldObject ID.

To update an existing entity in database - You must set the Object Id of new Object to OldObject Id.

newObject.setId(OldObject.getId()),然后repo.save(newObject)将更新数据库中的现有实体.

i.e. newObject.setId(OldObject.getId()) and then repo.save(newObject) will update the existing entity in the database.

实体类

@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 + '\'' +
                '}';
    }
}

汽车线库

@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存储库中检出完成项目.

Checkout the Complete Project in my GitHub repository.

这篇关于如何在Spring-JPA中更新与主键关联的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆