0

Spring-JPA를 사용하여 기본 키와 연관된 레코드를 업데이트하려고합니다.Spring-JPA에서 기본 키와 관련된 값을 업데이트하는 방법

여기서 GroupChatHeartBeat는 Entity로 선언되어 있지만 새로운 값으로 대체되지 않습니다. 그것은 오래된 가치만을 보여주고 있습니다. 내 의도는 테이블을 업데이 트하는 것입니다 그리고 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; 
    } 

} 

답변

1

에게 인이 시도 :

데이터베이스에있는 기존 개체를 업데이트하려면 - 당신은 OldObject 이드가 새로운 객체의 객체 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 + '\'' + 
       '}'; 
    } 
} 

자동으로 묶어 저장소

@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을 확인하십시오.

관련 문제