2017-12-27 32 views
0

필드는 필드 회원이라고 - ID (기본 키), 이름 (문자열), 위치 (문자열)봄 JPARepository 업데이트 내가 자바 간단한 모델을

내가의 필드를 업데이트 할 수있는 POST 끝점을 노출 할 회원. 이 방법은 내가 해당 특정 필드를 업데이트,이

{ "id":1,"name":"Prateek"} 

또는

{ "id":1,"position":"Head of HR"} 

처럼 페이로드를 수용하고 수신 된 페이로드를 기반으로 할 수 있습니다. JPARepository를 사용하여 어떻게 달성 할 수 있습니까?

내 저장소 인터페이스가 기본 -

import org.springframework.data.jpa.repository.JpaRepository; 
import org.springframework.stereotype.Repository; 


@Repository("memberRepository") 
public interface MemberRepository extends JpaRepository<Member, Integer>{ 

} 

내 회원 모델 - 당신이 ID를받을 때

트릭을 어떻게해야이 같은
@Entity 
@Table(name="members") 
public class Member { 

    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    @Column(name="member_id") 
    private Integer id; 

    @Column(name="member_name") 
    @NotNull 
    private String name; 

    @Column(name="member_joining_date") 
    @NotNull 
    private Date joiningDate = new Date(); 

    @Enumerated(EnumType.STRING) 
    @Column(name="member_type",columnDefinition="varchar(255) default 'ORDINARY_MEMBER'") 
    private MemberType memberType = MemberType.ORDINARY_MEMBER; 

    public Member(Integer id, String name, Date joiningDate) { 
     super(); 
     this.id = id; 
     this.name = name; 
     this.joiningDate = joiningDate; 
     this.memberType = MemberType.ORDINARY_MEMBER; 
    } 

    public Integer getId() { 
     return id; 
    } 

    public void setId(Integer id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public Date getJoiningDate() { 
     return joiningDate; 
    } 

    public void setJoiningDate(Date joiningDate) { 
     this.joiningDate = joiningDate; 
    } 

    public MemberType getMemberType() { 
     return memberType; 
    } 

    public void setMemberType(MemberType memberType) { 
     this.memberType = memberType; 
    } 

    public Member(String name) { 
     this.memberType = MemberType.ORDINARY_MEMBER; 
     this.joiningDate = new Date(); 
     this.name = name; 
    } 

    public Member() { 

    } 

} 
+0

을 수행해야 해당 ID에 대한 데이터베이스를 쿼리 한 다음 가져온 레코드의 필드를 업데이트 한 다음 다시 저장하십시오. – pvpkiran

+0

@pvpk iran Yea - Object의 모든 필드를 업데이트하는 단일 메소드를 어떻게 가질 수 있는지에 대한 도움이 필요합니다. –

답변

1

뭔가

public class MemberService { 

    @Autowired 
    MemberRepository memberRepository; 

    public Member updateMember(Member memberFromRest) { 

    Member memberFromDb = memberRepository.findById(memberFromRest.getid()); 

    //check if memberFromRest has name or position and update that to memberFromDb 

    memberRepository.save(memberFromDb); 
    } 
}