Entity에 private constructor + 정적팩토리 메소드를 넣었을 때 Class 'XXX' should have [public, protected] no-args constructor 가 발생하는 문제

0

Kotlin

목록 보기
8/32
post-custom-banner
  • Entity에 'private constructor + 정적팩토리 메소드' 를 이용해서 객체를 만드려고 했는데 Class 'XXX' should have [public, protected] no-args constructor 문제가 떴다.
  • 난 no-arg 플러그인도 잘 설정해줬는데 왜 뜨는 것이지..?
    업로드중..
  • JPA의-엔티티에-protected-public-기본-생성자가-필요한-이유
    -> 위의 글을 보고 깨달음!
    만약 기본 생성자가 private으로 선언되어 있다면 해당 엔티티를 상속한 프록시를 만들 수 없을 것입니다. 상속한 객체의 생성자는 반드시 부모 객체의 생성자 super를 호출해야 하는데, private이면 상속받은 클래스에서 호출할 수 없기 때문입니다. 때문에 엔티티 클래스의 생성자는 private일 수 없습니다. 단, 이는 컴파일 타임에 잡아내는 오류는 아닙니다. 인텔리제이를 사용하면 public이나 protected로 선언된 기본 생성자가 없는 클래스에 Class 'XXX' should have [public, protected] no-args constructor라는 경고를 볼 수 있지만, 기본 생성자의 접근 제어자에 관련된 예외는 런타임 예외이기 때문에 즉시 로딩을 사용하거나 하여 프록시를 사용할 일이 없다면 관련 예외가 발생하지 않고 정상적으로 동작합니다.
  • 내가 Entity에서 ManyToOne 으로 다른 엔티티 객체를 연관관계로 가지고 있었기 때문에 생긴 문제인 것으로 보인다!
profile
백엔드를 공부하고 있습니다.
post-custom-banner

0개의 댓글