利用springboot的jpa的API实现修改功能的一个小问题

本文探讨了在Spring Boot中使用JPA API进行数据修改时遇到的问题,介绍了相关框架版本信息,并提供了一段关键代码示例,参考自《Spring Boot2企业应用实战》一书。
摘要由CSDN通过智能技术生成

 

问题背景

 在springboot中利用Spring DataJPA 的API实现修改功能时,按照书里讲的直接用set方法修改持久化对象的值即可,但我尝试了很多遍不行,经过摸索很快解决了这个小问题。

框架及版本

 1、 spring-boot-starter-parent   2.0.6.RELEASE

 2、 spring-boot-starter-data-jpa  2.0.1.RELEASE

 

主要代码如下


import javax.persistence.*;
import java.io.Serializable;

/*
  要操作的实体类
*/
@Entity
@Table(name = "tb_member")
public class Member implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String name;
    private char sex;
    private int age;

    @ManyToOne(
            fetch = FetchType.LAZY,
            targetEntity = Party.class,
            cascade = CascadeType.ALL
    )
    @JoinColumn(name = "partyId",referencedColumnName = "code")
    private Party party;

    @Override
    public String toString() {
        return "Member{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", sex=" + sex +
                ", age=" + age +
                '}';
    }

    public Member(){}
    public Member(String name, char sex, int age,Party party) {
        this.name = name;
        this.sex = sex;
        this.age = age;
        this.party = party;
    }

    public Party getParty() {
        return party;
    }

    public void setParty(Party party) {
        this.party = party;
    }

    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public char getSex() {
        return sex;
    }

    public void setSex(char sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

 

import com.enchi.youcanvote.youcanvotecore.Entity.Member;
import org.springframework.data.jpa.repository.JpaRepository;

/*
  数据操作层
*/
public interface MemberRepository extends JpaRepository<Member,Integer> {

}

 

/*
  测试类代码  

*/ 
@Test
    @Transactional
    public void MemberTest() {
        Optional<Member> op = memberRepository.findById(1);
        Member member = op.get();
        member.setName("随便是谁");//按照书里讲的,获得持久化对象都直接set即可修改。事实上并不能
        memberRepository.saveAndFlush(member); //加上这句话就可以修改,注意,只用save是不行的
    }

参考书籍  《Spring Boot2企业应用实战》--疯狂软件 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值