JPA 실습 중 에러가 발생했어요😢
java.lang.IllegalArgumentException: Unknown entity: com.example.jpaplayground.start.Member
at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:759)
at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:742)
at com.example.jpaplayground.start.JpaMain.logic(JpaMain.java:42)
at com.example.jpaplayground.start.JpaMain.main(JpaMain.java:21)
스프링 프레임워크의 도움 없이 JPA를 실습하고 있는데 Member 엔티티를 읽어 오지 못하고 있더라구요.
엔티티를 스캔할 수 있도록 persistence.xml 파일에 class 명시가 필요하답니다.
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" version="2.1">
<persistence-unit name="playground">
<class>com.example.jpaplayground.start.Member</class>
<properties>
persistence-unit 안에 <class>태그를 사용하여 엔티티 패키지를 명시함으로써 엔티티를 스캔할 수 있도록 해주세요.
이후에 스프링 JPA를 사용할 경우에는 자동으로 엔티티를 스캔해주기 때문에 문제 없이 사용하실 수 있겠습니다.
한 가지 더 주의하실 점은 Member 클래스(엔티티)의 위치를 또 하나의 패키지를 만들어 하위에 생성할 경우 스캔을 못하는 문제도 있었습니다.
예를 들어서
com.example.jpaplayground.start.member -> Member.java
com.example.jpaplayground.start -> JpaMain
와 같이 Member 엔티티를 하위 패키지에 저장하면 스캔을 못해요.
그래서 동등한 위치에 생성을 해주셔야겠습니다.
com.example.jpaplayground.start -> JpaMain.java, Member.java
바로 이런 문제들을 만나지 않도록 스프링 JPA를 사용하고 싶으시겠죠?
스프링 JPA를 바로 쓰고 싶으셔도 학습을 위해서는 한 걸음씩 나아가셔야 되겠습니다.
감사합니다.
소스코드: Github 링크
'개발 기록 > 스프링' 카테고리의 다른 글
[토비의 스프링 정리] #3 템플릿의 대해서 리뷰 및 기록 (0) | 2023.02.16 |
---|---|
[토비의 스프링 정리] #2 테스트의 대해서 리뷰 및 기록 (0) | 2023.02.07 |
[스프링] H2 데이터베이스 콘솔 로그인 (0) | 2023.02.04 |
[토비의 스프링 정리] #1 오브젝트와 의존관계의 대해서 리뷰 및 기록 (0) | 2023.02.02 |
[스프링] 트랜잭션이란 무엇인가? (종류, 주의점) (0) | 2022.09.23 |