eclipse中搭建springboot学习(10)---JPA使用4(多张表 ManyToOne)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Gr_lbxx/article/details/83378763

新增SchoolDTO

package com.example.demo1025.dto;

import java.io.Serializable;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name = "school")
public class SchoolDTO implements Serializable {

    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue
    private int id;

    private String schoolName;

    // 一个学校对应多个学生,用list
    // CascadeType.PERSIST 设置 :级联 保存/新建 操作 。新建 学校和学生 的时候,保存新建的学校那么新建的学生也同时被保存
    // CascadeType.REMOVE 级联删除,学校删除的时候学生也会被删除
    @OneToMany(mappedBy = "school", cascade = { CascadeType.PERSIST, CascadeType.REMOVE })
    private List<StudentDTO> studentList;

    public int getId() {
        return id;
    }

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

    public String getSchoolName() {
        return schoolName;
    }

    public void setSchoolName(String schoolName) {
        this.schoolName = schoolName;
    }

    public List<StudentDTO> getStudentList() {
        return studentList;
    }

    public void setStudentList(List<StudentDTO> studentList) {
        this.studentList = studentList;
    }

}

在 StudentDTO新增school

package com.example.demo1025.dto;

import java.io.Serializable;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;

@Entity
@Table(name = "student")
public class StudentDTO implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue
    @Column(name = "student_id")
    private int id;

    private String studentName;

    // 设置cascade,否则会报错object references an unsaved transient instance - save the
    // transient instance before flushing :
    // com.example.demo1025.dto.StudentDTO.score ->
    // com.example.demo1025.dto.ScoreDTO
    @OneToOne(cascade = CascadeType.ALL)
    private ScoreDTO score;

    // 多个学生对应一个学校
    @ManyToOne
    private SchoolDTO school;

    public int getId() {
        return id;
    }

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

    public String getStudentName() {
        return studentName;
    }

    public void setStudentName(String studentName) {
        this.studentName = studentName;
    }

    public ScoreDTO getScore() {
        return score;
    }

    public void setScore(ScoreDTO score) {
        this.score = score;
    }

    public SchoolDTO getSchool() {
        return school;
    }

    public void setSchool(SchoolDTO school) {
        this.school = school;
    }

}

 新增StudentSchoolRepository

package com.example.demo1025.dao;

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

import com.example.demo1025.dto.SchoolDTO;

public interface StudentSchoolRepository extends JpaRepository<SchoolDTO, Integer> {

}

StudentScoreService 新增addSchoolStudent添加方法

@Autowired
    private StudentSchoolRepository studentSchoolRepository;

 /**
     * 级联添加
     */ 

public void addSchoolStudent() {
        SchoolDTO schoolDTO = new SchoolDTO();
        schoolDTO.setSchoolName("春田花花幼儿园");

        StudentDTO studentDTO = new StudentDTO();
        studentDTO.setStudentName("小花");
        studentDTO.setSchool(schoolDTO);

        StudentDTO studentDTO1 = new StudentDTO();
        studentDTO1.setStudentName("小花1");
        studentDTO1.setSchool(schoolDTO);

        List<StudentDTO> studentList = new ArrayList<>();
        studentList.add(studentDTO);
        studentList.add(studentDTO1);

        schoolDTO.setStudentList(studentList);
        studentSchoolRepository.save(schoolDTO);

    }

 /**
     * 级联删除
     */
    public void deleteSchool() {
        studentSchoolRepository.deleteById(21);
    }

StuentScoreController 新增addStudentSchool方法

    @RequestMapping("addStudentSchool")
    @ResponseBody
    public String addStudentSchool() {
        studentScoreService.addSchoolStudent();
        return "添加成功";
    } 

 @RequestMapping("deleteStudentSchool")
    @ResponseBody
    public String deleteStudentSchool() {
        studentScoreService.deleteSchool();
        return "删除成功";
    }

猜你喜欢

转载自blog.csdn.net/Gr_lbxx/article/details/83378763