如何将数据插入到一个表的外键中,该表已经使用postman为一个Spring Boot 项目填充

shstlldc  于 2022-11-07  发布在  Postman
关注(0)|答案(1)|浏览(164)

我是Sping Boot 的新手,需要有关一对多Map的帮助。我有两个表,分别称为Course和Instructor。一个讲师有多个课程,而另一个课程只有一个讲师。Course表有四条记录,但讲师ID(讲师的外键)为空。我知道如何在外键中输入数据,同时填写表的其余部分,如下所示:

{
"instructor" : {
    "firstName" : "Dave",
    "lastName" : "John",
    "telephone" : 714523698,
    "courses" : [
        {
            "courseNo" : 1011,
            "courseName" :"Network Engineering",
            "duration" : "2 years"

        },
        {
            "courseNo" : 1012,
            "courseName" :"Internet of Things",
            "duration" : "3 years"

        }
    ]
}

但我需要的是一种方法,只需输入courseNo,即可将教师标识输入到正确的课程中。

public class TeachController {

@Autowired
private InstructorRepository instructorRepository;

@Autowired
private CourseRepository courseRepository;

@GetMapping("/findTeachCourse")
public List<Instructor> findTeachCourse(){
    return instructorRepository.findAll();
}

@PostMapping("/newTeachCourse")
public Instructor newTeachCourse(@RequestBody TeachRequest teachRequest){
    return instructorRepository.save(teachRequest.getInstructor());
}}

Course table
希望这些信息足以帮助我摆脱困境。

yyyllmsg

yyyllmsg1#

您可以使用@ManyToOne注解将“课程”表中的“教师标识”列Map到“教师”表。

@ManyToOne
    @JoinColumn(name="instructor_id")
    private Instructor instructor;

然后,在您的控制器中,您可以使用InstructorRepository通过教师的id查找教师,并设置Course对象的教师属性。

Instructor instructor = instructorRepository.findById(teachRequest.getInstructorId());
    course.setInstructor(instructor);

相关问题