JPA

오류 org.hibernate.InstantiationException: No default constructor for entity , with 롬복

dev.mk 2023. 11. 9. 16:52
반응형

org.hibernate.InstantiationException: No default constructor for entity

Entity를 JpaRepository에서 가져올 때 기본 생성자를 사용하는데, 생성자가 없어서 오류가 발생한다는 내용.

 

 

entity 클래스에 파라미터가 없는 기본생성자를 만들어주는 @NoArgsConstructor 어노테이션을 추가한다.

 

BEFORE

Board.java

@Table(name = "JPA_BOARD")
@Entity
@Data
@Builder
public class Board {
	....생략
}

 

 

 

AFTER

@NoArgsConstructor 추가

@Table(name = "JPA_BOARD")
@Entity
@Data
@NoArgsConstructor
public class Board {

    @Id
    @Column(name="bno")
    private int bno;	//게시판(PK)
	....생략
    
    @Builder
    public Board(int bno, ...){
    this.bno
    ....생략
    }
}

 

 

dto ↔ entity간 데이터를 주고받을때 빌더패턴이 있어야 편리하다.

하지만 @Builder 어노테이션이 클래스위에 선언되어 있으면 @NoArgsConstructor 어노테이션과 같이 사용할 수없다.

번거롭지만 클래스안에 빌더패턴을 작성해주면 에러가 발생하지 않는다.

반응형