해결된 질문
작성
·
4.2K
0
강의 기준 ('07:50) 스프링 부트 실행시, BeanCreationException
오류가 발생합니다. 아래는 콘솔창의 에러문 입니다
에러 메세지를 보면 Category 와 Item 클래스간 매핑이 되지 않았다 라는 식의 메세지가 확인됩니다
코드 상으로는 연관관계 매핑이 되어 있는데 어떤 이유인지 모르겠습니다 ㅠ
콘솔-오류 메시지
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: com.jpabook.jpashop.domain.item.Item.categories[jdk.jfr.Category]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1804) ~[spring-beans-5.3.23.jar:5.3.23]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) ~[spring-beans-5.3.23.jar:5.3.23]
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.23.jar:5.3.23]
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.23.jar:5.3.23]
Category
@Entity
@Getter
@Setter
public class Category {
@Id
@GeneratedValue
@Column(name = "category_id")
private Long id;
private String name;
@ManyToMany
@JoinTable(name = "category_item",
joinColumns = @JoinColumn(name = "category_id"),
inverseJoinColumns = @JoinColumn(name = "item_id"))
private List<Item> items = new ArrayList<>();
@ManyToOne
@JoinColumn(name = "parent_id")
private Category parent;
@OneToMany(mappedBy = "parent")
private List<Category> child = new ArrayList<>();
}
Item
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "dType")
@Getter @Setter
public abstract class Item {
@Id @GeneratedValue
private Long id;
private String name;
private int price;
private int stockQuantity;
@ManyToMany(mappedBy = "items")
private List<Category> categories = new ArrayList<>();
}
답변 3
1
안녕하세요 지나가는 1인 입니다.
저도 비슷한 문제가 생겨서 맨땅에 해딩을 하다가 겨우 해결을 했는데 정확한 답변이 될지는 모르겠으나 혹시나 도움이 될까 하여 이렇게 몇자 끄적입니다.
Item class 부분에서
@Id @GeneratedValue @Column(name = "item_id") private Long id;
@Column(name = "item_id") <--- 요부분이 빠진 것 같습니다.
혹시나 님께 도움이 될까 하여 몇자 끄적였습니다. ^^;;
기존 생성된 테이블을 삭제하시고, 다시 실행해보시겠어요?
이전에 생성된 테이블 속성이 남아 있어서 해결이 안된 걸 수도 있을 것 같아요.
삭제해도 동일한 문제가 발생할 경우 댓글남겨주세요
코드를 확인해봐야 알 것 같습니다.
전체 프로젝트를 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.
구글 드라이브 업로드 방법은 다음을 참고해주세요.
https://bit.ly/3fX6ygx
ㅁ 업로드 시 권한 문제 꼭 확인해주세요
공유 기본 설정은 비공개로 되어 있어 업로드 한 본인 계정만 접근이 가능합니다.
본인 계정이 아닌 링크를 통한 타 계정 접근이 가능한지 확인하는 방법은 업로드 한 구글 계정을 로그아웃하고 링크를 접속하여 "액세스 권한 요청 화면"이 출력되는지 확인을 해주세요.
감사합니다
Eddie 님 답변 감사합니다!
콜럼 네임을 추가했는데도 같은 에러가 뜨네요 ㅠㅠ 뭐가 맵핑이 안되는것 같은데 이유를 모르겠습니다 ㅠㅎㅎ