2017-12-27 45 views
0

フィールドは、フィールドでメンバーと呼ばれる - ID(主キー)、名前(文字列)、位置(文字列)春JPARepositoryアップデートは、私はJavaでの単純なモデルを持っている

私はのフィールドを更新するために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>{ 

} 

マイメンバーモデル -

@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私はちょうどオブジェクトの任意のフィールドを更新する単一のメソッドを持つことができますか? –

答えて

1

あなたがIDを受け取る際に、このような何かをトリックに

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); 
    } 
} 
関連する問題