JPA JoinColumn에서 지정한 FK에 자동으로 값 넣기
안녕하세요.
강의 도중 궁금한점이 있어 질문 드립니다.
School Entity와 Student Entity를 Join 관계로 지정하였습니다.
[School Entity]
@Table(name = "school")
public class SchoolVo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Integer id;
@Column(name = "school_name", nullable = false)
private String schoolName;
@OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy="schoolVoList")
private List<Student> student = new ArrayList<>();
}
[Student Entity]
@Table(name = "student")
public class StudentVo {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Integer id;
@Column(name = "school_id", nullable = false)
private int schoolId;
@Column(name = "student_name", nullable = false)
private String studentName;
@ManyToOne
@JoinColumn(name = "school_id_fk")
private SchoolVo schoolVoList;
}
repository.save를 이용하여 student 테이블에 값을 추가하려고 합니다.
이때 FK인 "school_id_fk"에만 값이 들어가지 않는데요. FK에 접근하려면 어떻게 하면 될까요?
FK키에 자동으로 schoolId 값이 들어가도록 하고 싶습니다.
Student 테이블에 값을 저장한 소스는 아래와 같습니다.
@PostMapping("/local")
public StudentVo setStudentInfo(@RequestBody StudentVo newStudent) {
return studentRepository.save(newStudent);
}
그리고 다른 이야기이지만..
Student Table에 school_id 컬럼이 있음에도 불구하고 FK를 별도로 지정해 주는 방법은 효율적인 건가요?
2컬럼이 계속 같은 값이 들어갈텐데 인터넷 검색해보니 가시성도 높아지고 별도로 해주는게 좋다고도 하던데
굳이 같은 값이 들어가는 컬럼을 중복해서 만들 필요가 있는지,
FK없이 JPA에서 테이블간의 조인도 가능한지 궁금합니다!
질문이 쫌 많아졌지만... 조언 부탁 드립니다^^
감사합니다.