我有一个名为 Member 的简单 Java 模型,其中包含字段 - ID(主键)、名称(字符串)、位置(字符串)
我想公开 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>{
}
我的成员(member)模型 -
@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() {
}
}
最佳答案
像这样的事情应该可以解决问题
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);
}
}
关于Spring JPARepository 更新字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47988853/