【问题标题】:How to update values associated with Primary Key in Spring-JPA如何在 Spring-JPA 中更新与主键关联的值
【发布时间】:2017-01-17 12:45:47
【问题描述】:

我想使用 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 被声明为实体,但这样做并没有替换为新值。它只显示旧值。我的意图是更新表,如果存在 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;
    }

}

【问题讨论】:

    标签: spring hibernate spring-data spring-data-jpa hibernate-mapping


    【解决方案1】:

    试试这个:

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

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

    实体类

    @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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-13
      • 1970-01-01
      • 2013-02-27
      • 2021-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多