관리 메뉴

제뉴어리의 모든것

스프링 JPA 사용중 Error: java: no suitable constructor found for VO(long,java.lang.String) 에러 본문

BugNote

스프링 JPA 사용중 Error: java: no suitable constructor found for VO(long,java.lang.String) 에러

제뉴어리맨 2022. 9. 1. 02:15

스프링 부트 프로젝트에서 JPA를 사용하던중 

Entity 를 초기화 하기 위해 Builder() 를 사용하던 중 

위와 같은 에러가 발생하였다.

 

참고로 해당 Entity의 코드는 아래와 같다

@Builder
@Getter
@Setter
@NoArgsConstructor
@Entity
public class Member {

    @Id
//    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long memberId;

    @Column(nullable = false, updatable = false, unique = true)
    private String email;

    @Column(length = 100, nullable = false)
    private String name;

    @Column(length = 13, nullable = false, unique = true)
    private String phone;

    @Column(nullable = false)
    private LocalDateTime createdAt = LocalDateTime.now();

    @Column(nullable = false, name = "LAST_MODIFIED_AT")
    private LocalDateTime modifiedAt = LocalDateTime.now();

    @Transient
    private String age;

    @OneToMany(mappedBy = "member")
    private List<Order> orders = new ArrayList<>();

    public void addOrder(Order order) {
        orders.add(order);
    }

    public Member(String email) {
        this.email = email;
    }

    public Member(String email, String name, String phone) {
        this.email = email;
        this.name = name;
        this.phone = phone;
    }

}

 

에러가 발생된 라인의 코드 내용은 아래와 같다

Member member = Member.builder().email("ch@naver.com").name("춘향").phone("010-7777-3333").age("18").build();

 

원인 :

모든 필드를 가지고 있는 생성자를 제외한 생성자를 가지고 있는 경우에는 아래와 같이 오류가 난다.

 

해결 방법 :

엔티티에 @AllArgsConstructor를 추가해줘야한다.

 

참조 :

https://til-perfectacle.netlify.app/2018/07/04/lombok-annotation-builder/