개발/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(){}

를 추가하여 해결하였다.

 

왠지 모르게 생성자를 저렇게 두는 것은 마음에 들지 않기 때문에 생성자 추가 관련하여 좀 더 생각해 봐야겠다.