작성
·
394
0
해당 강의에서는 Lombok을 사용하지 않지만,
실습중에 lombok을 추가하여 @Getter, @Setter를 사용하여 자동으로 메서드를 생성해 주었습니다.
그런데 상속 받은 자식 클래스에서 부모 클래스의 필드에 접근은 가능하지만, 서버를 돌리면 부모 클래스 필드를 인식하지 못한다는 오류가 나옵니다.
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn
@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<>();
}
package jpabook.jpashop.domain;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.Entity;
@Entity
@Getter @Setter
public class Book extends Item{
private String author;
private String isbn;
}
Book book = new Book();
book.setPrice(15000);
book.setName("JPA");
book.setAuthor("USERA");
main 함수를 build하면 아래와 같은 오류가 뜹니다. 해당 오류에 대한 원인과 해결 방안이 궁금합니다.
src\main\java\jpabook\jpashop\JpaMain.java:25: error: cannot find symbol
book.setPrice(15000);
^
symbol: method setPrice(int)
location: variable book of type Book
안녕하세요, 해당 오류에 대해서 혼자 설정을 이것저것 만지다보니 해결이 되었습니다.
실전 예제 프로젝트(jpaShop)를 기존 강의에서 설정한 것과는 다르게 Gradle 빌드 방식 + lombok 을 사용하였습니다.
위 프로젝트내에서 persistence.xml 파일 관련한 오류인, Entity unknown 오류가 발생하여 다른 수강생 분들이 알려주신 project > build > gradle 설정에서 build and run 설정을 Gradle(Default) 값으로 설정되어있는 상태였습니다. 해당 값을 IntelliJ 로 변경해주니 위의 오류가 사라졌습니다.