2021. 4. 13.

mappedBy reference an unknown target entity property:

스프링 부트 + JPA (@OneToMany, @ManyToMany) 작업 도중 만나게 된 에러 내용

Caused by: org.hibernate.AnnotationException: 
mappedBy reference an unknown target entity property:

이 에러의 주된 원인은 연관관계를 맺고 있는 변수를 잘못 적거나 착각하거나 오타를 냈을 때 일어난다.

@Entity
public class Member {

    @Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    
    @ManyToMany
    @JoinTable(name = "MEMBER_PRODUCT",
    	joinColumns = @JoinColumn(name = "MEMBER_ID"),
        inversJoinColumns = @JoinColumn(name = "PRODUCT_ID"))
    private List<Product> products = new Arraylist<Product>();
}
@Entity
public class Product {

    @Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @ManyToMany(mappedBy = "products")
    private List<Member> members;
}

List의 변수명 'products'와 mappedBy 텍스트가 정확하게 일치해야 한다. 자동완성으로 'productList'란 변수명을 만들고 mappedBy에는 'product'를 작성하면 타겟 엔티티를 못찾겠다는 에러메세지가 출력된다.

댓글 없음:

댓글 쓰기