개발/Spring
jpa entity 기본 생성자(Default Constructor) 필요할때
보리ing
2020. 3. 10. 10:43
jpa로 검색해오는 소스에서 기본 생성자 관련 에러가 발생했다.
검색과 고민 끝애
해당 객체의 이름만 딴 기본생성자를 넣었고, 문제 없이 조회가 가능해졌다
@Entity
public class Student{
protected String name;
protected int age;
public Student(Graduate graduate)
this.name = graduate.getName();
this.age = graduate.getAge();
}
와같이 student를 저장할때 졸업생으로 받았다면 학생으로 생성후 저장하려고 생성자를 만들어 뒀는데
이로인한 기본 생성자 에러가 발생한 것이다.
JPA는 조회시 default Constructor로 객체를 생성한 뒤 Reflection을 이용해 값을 매핑하는데
student entity에는 졸업생을 받아 생성하는 것 밖에 없어서 (아무것도 없는상태라면 자동으로 아무것도 없는 것을
기본생성자로 적용하는 것 같다. 때문에 평소에 기본생성자 작성없이 이용해올 수 있었던 것)
에러가 발생하였고,
public Student(){}
를 추가하여 해결하였다.
왠지 모르게 생성자를 저렇게 두는 것은 마음에 들지 않기 때문에 생성자 추가 관련하여 좀 더 생각해 봐야겠다.