강의

멘토링

커뮤니티

Inflearn コミュニティ Q&A

blackpepper のプロフィール画像
blackpepper

投稿した質問数

本当! Spring BootとJPAの活用1 - Webアプリケーション開発

エンティティクラス開発1

BeanCreationException 질문드립니다.

解決済みの質問

作成

·

377

0

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: jpabook.jpashop.domain.item.Item.categories[jpabook.jpashop.domain.Category]

이런 에러가 발생합니다.

코드 첨부합니다.

해당 부분을 지우면 문제없이 돌아가요..

 

package jpabook.jpashop.domain;

import jpabook.jpashop.domain.item.Item;
import lombok.Getter;
import lombok.Setter;

import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;

@Embeddable
@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(fetch = FetchType.LAZY)
@JoinColumn(name = "parent_id")
private Category parent;

@OneToMany(mappedBy = "parent")
private List<Category> child = new ArrayList<>();

public void addChildCategory(Category child) {
this.child.add(child);
child.setParent(this);
}

protected Category(){}

}
package jpabook.jpashop.domain.item;

import jpabook.jpashop.domain.Category;
import lombok.Getter;
import lombok.Setter;

import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "dtype")
@Getter @Setter
public abstract class Item {

@Id
@GeneratedValue
@Column(name = "item_id")
private Long id;
private String name;
private int price;
private int stockQuantity;

@ManyToMany(mappedBy = "items")
private List<Category> categories = new ArrayList<Category>();
}
javaspringspring-boot웹앱JPA

回答 2

0

blackpepper님의 프로필 이미지
blackpepper
質問者

감사합니다.. 해결했습니다.

@Entity를 해야하는데 @Embeddable로 입력된게 문제였네요!

 

그리고 첫번째 코드는 수업 자료 PDF에 있는 코드를 그대로 사용한거에요.. 확인 부탁드립니다.

 

 

수업자료를 캡쳐해서 올려주시면 확인해보겠습니다.

blackpepper님의 프로필 이미지
blackpepper
質問者

25페이지입니다.

제가 올린 코드는 카테고리 클래스 코드였네요.

그 외는 강의와 다르게 작성한 부분이 었어서 발생한 문제이오니 되도록 강의와 동일하게 진행해주세요.

0

안녕하세요. 흑후추님, 공식 서포터즈 OMG입니다.

올리신 코드 내에서 강의와 다르게 작성된 부분이 많네요.

 

private List<Category> categories = new ArrayList<Category>();

 

 protected Category(){}
@Embeddable
@Getter
@Setter
public class Category {

강의를 참고하여 동일하게 진행해주세요.

해결이 안될 경우 댓글남겨주세요

감사합니다.

blackpepper のプロフィール画像
blackpepper

投稿した質問数

質問する