Spring JPARepository 更新字段

标签 spring hibernate spring-mvc spring-boot spring-data-jpa

我有一个名为 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/

相关文章:

java - org.springframework.beans.factory.BeanCreationException & org.springframework.beans.BeanInstantiationException,未找到默认构造函数

java - spring @Query 注释中的 HQL 查询

java - Spring 4.0.1 + quartz 1.5.2

java - 当与 JUnit 一起使用方法时,jdbcTemplate 为 null

spring - 无法将源 {} 映射到实体

spring - 如果应用程序无法启动,是否有可能导致快速 Spring 测试失败?

spring - Spring Cloud Gateway Predicate中matchOptionalTrailingSeparator有什么用

Spring 社交 : redirect url when server behind proxy

java - 如何覆盖@MappedSuperclass 的子类中的参数

java - 如何通过 Hibernate 直接更新外键值?