Inflearn brand logo image

인프런 커뮤니티 질문&답변

안태승님의 프로필 이미지
안태승

작성한 질문수

스프링 DB 2편 - 데이터 접근 활용 기술

프로젝트 설정과 메모리 저장소

스프링 DB2편 강의 듣는 JPAQueryFactory에러

작성

·

150

·

수정됨

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)


2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)


3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오

알려주신대로 그리고 강의파일에 있는대로 buil.gradle파이 ㄹ옵션도 따라했는데 에러가 발생합니다

image.png

image.png


방법을 알려주세요
매번 강의를 들을 때마다 강의보다 설정하는데 시간이 너무 오래 걸리고 힘듭니다 도와주세요

답변 2

0

안녕하세요. 안태승님, 공식 서포터즈 David입니다.

도움을 드리고 싶지만 질문 내용만으로는 답변을 드리기 어렵습니다.

실제 동작하는 전체 프로젝트를 ZIP파일로 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.

구글 드라이브 업로드 방법은 다음을 참고해주세요.

https://bit.ly/3fX6ygx


주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요


추가로 다음 내용도 코멘트 부탁드립니다.

1. 문제 영역을 실행할 수 있는 방법

2. 문제가 어떻게 나타나는지에 대한 상세한 설명 (오류 화면, 오류 로그 포함)


링크: 공식 서포터즈

링크: 자주하는 질문

감사합니다.

안태승님의 프로필 이미지
안태승
질문자

https://drive.google.com/drive/folders/1Aq7rxtobHBlO-yoftHXxpkt0fbvOl4Xp?usp=sharing
파일 구글 링크입니다
1.어떤 의미로 말하시는건지 모르겠습니다만. compile 에러로 인해 실행이 안되는 문제입니다.

  1. 스프링 부트를 (이클립스)로 구동 하려고하면 아래와같은 로그가 콘솔에찍힙니다.

. ____ _ __ _ _

/\\ / ___'_ __ _ ()_ __ __ _ \ \ \ \

( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \

\\/ ___)| |_)| | | | | || (_| | ) ) ) )

' |____| .__|_| |_|_| |_\__, | / / / /

=========|_|==============|___/=/_/_/_/

 :: Spring Boot ::   (v3.2.0)

 

2025-03-22T13:09:55.889+09:00  INFO 5008 --- [ main] h.itemservice.ItemServiceApplication  : Starting ItemServiceApplication using Java 17.0.6 with PID 5008 (C:\Users\Administrator\Desktop\스프링부트 공부\source\itemservice-db\bin\main started by Administrator in C:\Users\Administrator\Desktop\스프링부트 공부\source\itemservice-db)

2025-03-22T13:09:55.891+09:00  INFO 5008 --- [ main] h.itemservice.ItemServiceApplication  : The following 1 profile is active: "local"

2025-03-22T13:09:56.226+09:00  INFO 5008 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.

2025-03-22T13:09:56.275+09:00  INFO 5008 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 40 ms. Found 2 JPA repository interfaces.

2025-03-22T13:09:56.367+09:00  WARN 5008 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: java.lang.IllegalStateException: Unable to load cache item

2025-03-22T13:09:56.373+09:00  INFO 5008 --- [ main] .s.b.a.l.ConditionEvaluationReportLogger :

 

Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.

2025-03-22T13:09:56.384+09:00 ERROR 5008 --- [ main] o.s.boot.SpringApplication  : Application run failed

 

java.lang.IllegalStateException: Unable to load cache item

at org.springframework.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:75) ~[spring-core-6.1.1.jar:6.1.1]

at org.springframework.cglib.core.internal.LoadingCache.get(LoadingCache.java:34) ~[spring-core-6.1.1.jar:6.1.1]

at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData.get(AbstractClassGenerator.java:130) ~[spring-core-6.1.1.jar:6.1.1]

at org.springframework.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:317) ~[spring-core-6.1.1.jar:6.1.1]

at org.springframework.cglib.proxy.Enhancer.createHelper(Enhancer.java:562) ~[spring-core-6.1.1.jar:6.1.1]

at org.springframework.cglib.proxy.Enhancer.createClass(Enhancer.java:407) ~[spring-core-6.1.1.jar:6.1.1]

at org.springframework.context.annotation.ConfigurationClassEnhancer.createClass(ConfigurationClassEnhancer.java:138) ~[spring-context-6.1.1.jar:6.1.1]

at org.springframework.context.annotation.ConfigurationClassEnhancer.enhance(ConfigurationClassEnhancer.java:109) ~[spring-context-6.1.1.jar:6.1.1]

at org.springframework.context.annotation.ConfigurationClassPostProcessor.enhanceConfigurationClasses(ConfigurationClassPostProcessor.java:533) ~[spring-context-6.1.1.jar:6.1.1]

at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanFactory(ConfigurationClassPostProcessor.java:310) ~[spring-context-6.1.1.jar:6.1.1]

at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:363) ~[spring-context-6.1.1.jar:6.1.1]

at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:153) ~[spring-context-6.1.1.jar:6.1.1]

at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:775) ~[spring-context-6.1.1.jar:6.1.1]

at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:597) ~[spring-context-6.1.1.jar:6.1.1]

at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.2.0.jar:3.2.0]

at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) ~[spring-boot-3.2.0.jar:3.2.0]

at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:455) ~[spring-boot-3.2.0.jar:3.2.0]

at org.springframework.boot.SpringApplication.run(SpringApplication.java:323) ~[spring-boot-3.2.0.jar:3.2.0]

at org.springframework.boot.SpringApplication.run(SpringApplication.java:1342) ~[spring-boot-3.2.0.jar:3.2.0]

at org.springframework.boot.SpringApplication.run(SpringApplication.java:1331) ~[spring-boot-3.2.0.jar:3.2.0]

at hello.itemservice.ItemServiceApplication.main(ItemServiceApplication.java:30) ~[main/:na]

Caused by: java.lang.NoClassDefFoundError: EntityManager

at java.base/java.lang.Class.getDeclaredConstructors0(Native Method) ~[na:na]

at java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3373) ~[na:na]

at java.base/java.lang.Class.getDeclaredConstructors(Class.java:2555) ~[na:na]

at org.springframework.cglib.proxy.Enhancer.generateClass(Enhancer.java:655) ~[spring-core-6.1.1.jar:6.1.1]

at org.springframework.cglib.transform.TransformingClassGenerator.generateClass(TransformingClassGenerator.java:35) ~[spring-core-6.1.1.jar:6.1.1]

at org.springframework.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:26) ~[spring-core-6.1.1.jar:6.1.1]

at org.springframework.cglib.core.ClassLoaderAwareGeneratorStrategy.generate(ClassLoaderAwareGeneratorStrategy.java:57) ~[spring-core-6.1.1.jar:6.1.1]

at org.springframework.cglib.core.AbstractClassGenerator.generate(AbstractClassGenerator.java:366) ~[spring-core-6.1.1.jar:6.1.1]

at org.springframework.cglib.proxy.Enhancer.generate(Enhancer.java:575) ~[spring-core-6.1.1.jar:6.1.1]

at org.springframework.cglib.core.AbstractClassGenerator$ClassLoaderData.lambda$new$1(AbstractClassGenerator.java:107) ~[spring-core-6.1.1.jar:6.1.1]

at org.springframework.cglib.core.internal.LoadingCache.lambda$createEntry$1(LoadingCache.java:52) ~[spring-core-6.1.1.jar:6.1.1]

at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]

at org.springframework.cglib.core.internal.LoadingCache.createEntry(LoadingCache.java:57) ~[spring-core-6.1.1.jar:6.1.1]

... 20 common frames omitted

Caused by: java.lang.ClassNotFoundException: EntityManager

at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[na:na]

at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na]

at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[na:na]

... 33 common frames omitted

image.png

 

 

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 안태승님

다음과 같이 javax.persistence 부분을

import javax.persistence.*;

jakarta.persistence로 다음과 같이 변경해주시면 됩니다.

import jakarta.persistence.*;

 

메뉴얼 - 1. 데이터 접근 기술 - 시작 -> 프로젝트 구조 설명 1 - 기본에 나오는 다음 부분을 참고해주세요.

### 주의! - 스프링 부트 3.0

스프링 부트 3.0을 선택하게 되면 다음 부분을 꼭 확인해주세요.

* 1. Java 17 이상을 사용해야 합니다.

* 2. javax 패키지 이름을 jakarta로 변경해야 합니다.

* 오라클과 자바 라이센스 문제로 모든 javax 패키지를 jakarta로 변경하기로 했습니다.

* 3. H2 데이터베이스를 2.1.214 버전 이상 사용해주세요.

패키지 이름 변경 예)

* JPA 애노테이션

* javax.persistence.Entity -> jakarta.persistence.Entity

* 스프링에서 자주 사용하는 @PostConstruct 애노테이션

* javax.annotation.PostConstruct -> jakarta.annotation.PostConstruct

* 스프링에서 자주 사용하는 검증 애노테이션

* javax.validation -> jakarta.validation

 

감사합니다.

안태승님의 프로필 이미지
안태승
질문자

. ____ _ __ _ _

/\\ / ___'_ __ _ ()_ __ __ _ \ \ \ \

( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \

\\/ ___)| |_)| | | | | || (_| | ) ) ) )

' |____| .__|_| |_|_| |_\__, | / / / /

=========|_|==============|___/=/_/_/_/

 :: Spring Boot ::   (v3.2.0)

2025-03-25T21:08:56.452+09:00  INFO 13524 --- [ main] h.itemservice.ItemServiceApplication  : Starting ItemServiceApplication using Java 17.0.6 with PID 13524 (C:\Users\Administrator\Desktop\스프링부트 공부\source\itemservice-db\bin\main started by Administrator in C:\Users\Administrator\Desktop\스프링부트 공부\source\itemservice-db)

2025-03-25T21:08:56.454+09:00  INFO 13524 --- [ main] h.itemservice.ItemServiceApplication  : The following 1 profile is active: "local"

2025-03-25T21:08:56.843+09:00  INFO 13524 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode.

2025-03-25T21:08:56.889+09:00  INFO 13524 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 40 ms. Found 2 JPA repository interfaces.

2025-03-25T21:08:57.228+09:00  INFO 13524 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port 8080 (http)

2025-03-25T21:08:57.234+09:00  INFO 13524 --- [ main] o.apache.catalina.core.StandardService  : Starting service [Tomcat]

2025-03-25T21:08:57.234+09:00  INFO 13524 --- [ main] o.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/10.1.16]

2025-03-25T21:08:57.275+09:00  INFO 13524 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/]  : Initializing Spring embedded WebApplicationContext

2025-03-25T21:08:57.275+09:00  INFO 13524 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 793 ms

2025-03-25T21:08:57.372+09:00 DEBUG 13524 --- [ main] o.s.jdbc.datasource.DataSourceUtils  : Fetching JDBC Connection from DataSource

2025-03-25T21:08:57.374+09:00  INFO 13524 --- [ main] com.zaxxer.hikari.HikariDataSource  : HikariPool-1 - Starting...

2025-03-25T21:08:57.422+09:00  INFO 13524 --- [ main] com.zaxxer.hikari.pool.HikariPool  : HikariPool-1 - Added connection conn0: url=jdbc:h2:tcp://localhost/~/test user=SA

2025-03-25T21:08:57.424+09:00  INFO 13524 --- [ main] com.zaxxer.hikari.HikariDataSource  : HikariPool-1 - Start completed.

2025-03-25T21:08:57.452+09:00  INFO 13524 --- [ main] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [name: default]

2025-03-25T21:08:57.491+09:00  INFO 13524 --- [ main] org.hibernate.Version  : HHH000412: Hibernate ORM core version 6.3.1.Final

2025-03-25T21:08:57.516+09:00  INFO 13524 --- [ main] o.h.c.internal.RegionFactoryInitiator  : HHH000026: Second-level cache disabled

2025-03-25T21:08:57.698+09:00  INFO 13524 --- [ main] o.s.o.j.p.SpringPersistenceUnitInfo  : No LoadTimeWeaver setup: ignoring JPA class transformer

2025-03-25T21:08:58.260+09:00  INFO 13524 --- [ main] o.h.e.t.j.p.i.JtaPlatformInitiator  : HHH000489: No JTA platform available (set 'hibernate.transaction.jta.platform' to enable JTA platform integration)

2025-03-25T21:08:58.263+09:00  INFO 13524 --- [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'

2025-03-25T21:08:58.432+09:00  WARN 13524 --- [ main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning

2025-03-25T21:08:58.444+09:00  INFO 13524 --- [ main] o.s.b.a.w.s.WelcomePageHandlerMapping  : Adding welcome page: class path resource [static/index.html]

2025-03-25T21:08:58.607+09:00  INFO 13524 --- [ main] o.s.d.j.r.query.QueryEnhancerFactory  : Hibernate is in classpath; If applicable, HQL parser will be used.

2025-03-25T21:08:59.021+09:00  INFO 13524 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port 8080 (http) with context path ''

2025-03-25T21:08:59.026+09:00  INFO 13524 --- [ main] h.itemservice.ItemServiceApplication  : Started ItemServiceApplication in 2.823 seconds (process running for 3.189)

2025-03-25T21:08:59.027+09:00  INFO 13524 --- [ main] hello.itemservice.TestDataInit  : test data init

2025-03-25T21:08:59.044+09:00 DEBUG 13524 --- [ main] org.hibernate.SQL  : insert into item (item_name,price,quantity,id) values (?,?,?,default)

2025-03-25T21:08:59.047+09:00  WARN 13524 --- [ main] o.h.engine.jdbc.spi.SqlExceptionHelper  : SQL Error: 42102, SQLState: 42S02

2025-03-25T21:08:59.048+09:00 ERROR 13524 --- [ main] o.h.engine.jdbc.spi.SqlExceptionHelper  : Table "ITEM" not found; SQL statement:

insert into item (item_name,price,quantity,id) values (?,?,?,default) [42102-224]

2025-03-25T21:08:59.052+09:00  INFO 13524 --- [ main] p6spy  : #1742904539052 | took 0ms | rollback | connection 2| url jdbc:h2:tcp://localhost/~/test

;

2025-03-25T21:08:59.065+09:00 ERROR 13524 --- [ main] o.s.boot.SpringApplication  : Application run failed

org.springframework.dao.InvalidDataAccessResourceUsageException: could not prepare statement [Table "ITEM" not found; SQL statement:

insert into item (item_name,price,quantity,id) values (?,?,?,default) [42102-224]] [insert into item (item_name,price,quantity,id) values (?,?,?,default)]; SQL [insert into item (item_name,price,quantity,id) values (?,?,?,default)]

at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:277) ~[spring-orm-6.1.1.jar:6.1.1]

at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:241) ~[spring-orm-6.1.1.jar:6.1.1]

at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:550) ~[spring-orm-6.1.1.jar:6.1.1]

at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) ~[spring-tx-6.1.1.jar:6.1.1]

at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:335) ~[spring-tx-6.1.1.jar:6.1.1]

at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) ~[spring-tx-6.1.1.jar:6.1.1]

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) ~[spring-aop-6.1.1.jar:6.1.1]

at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:765) ~[spring-aop-6.1.1.jar:6.1.1]

at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) ~[spring-tx-6.1.1.jar:6.1.1]

at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:385) ~[spring-tx-6.1.1.jar:6.1.1]

at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-6.1.1.jar:6.1.1]

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) ~[spring-aop-6.1.1.jar:6.1.1]

at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:765) ~[spring-aop-6.1.1.jar:6.1.1]

at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:717) ~[spring-aop-6.1.1.jar:6.1.1]

at hello.itemservice.repository.jpa.JpaItemRepositoryV3$$SpringCGLIB$$0.save(<generated>) ~[main/:na]

at hello.itemservice.TestDataInit.initData(TestDataInit.java:22) ~[main/:na]

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]

at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]

at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]

at org.springframework.context.event.ApplicationListenerMethodAdapter.doInvoke(ApplicationListenerMethodAdapter.java:365) ~[spring-context-6.1.1.jar:6.1.1]

at org.springframework.context.event.ApplicationListenerMethodAdapter.processEvent(ApplicationListenerMethodAdapter.java:237) ~[spring-context-6.1.1.jar:6.1.1]

at org.springframework.context.event.ApplicationListenerMethodAdapter.onApplicationEvent(ApplicationListenerMethodAdapter.java:168) ~[spring-context-6.1.1.jar:6.1.1]

at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:178) ~[spring-context-6.1.1.jar:6.1.1]

at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:171) ~[spring-context-6.1.1.jar:6.1.1]

at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:149) ~[spring-context-6.1.1.jar:6.1.1]

at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:445) ~[spring-context-6.1.1.jar:6.1.1]

at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:378) ~[spring-context-6.1.1.jar:6.1.1]

at org.springframework.boot.context.event.EventPublishingRunListener.ready(EventPublishingRunListener.java:109) ~[spring-boot-3.2.0.jar:3.2.0]

at org.springframework.boot.SpringApplicationRunListeners.lambda$ready$6(SpringApplicationRunListeners.java:80) ~[spring-boot-3.2.0.jar:3.2.0]

at java.base/java.lang.Iterable.forEach(Iterable.java:75) ~[na:na]

at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:118) ~[spring-boot-3.2.0.jar:3.2.0]

at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:112) ~[spring-boot-3.2.0.jar:3.2.0]

at org.springframework.boot.SpringApplicationRunListeners.ready(SpringApplicationRunListeners.java:80) ~[spring-boot-3.2.0.jar:3.2.0]

at org.springframework.boot.SpringApplication.run(SpringApplication.java:341) ~[spring-boot-3.2.0.jar:3.2.0]

at org.springframework.boot.SpringApplication.run(SpringApplication.java:1342) ~[spring-boot-3.2.0.jar:3.2.0]

at org.springframework.boot.SpringApplication.run(SpringApplication.java:1331) ~[spring-boot-3.2.0.jar:3.2.0]

at hello.itemservice.ItemServiceApplication.main(ItemServiceApplication.java:30) ~[main/:na]

Caused by: org.hibernate.exception.SQLGrammarException: could not prepare statement [Table "ITEM" not found; SQL statement:

insert into item (item_name,price,quantity,id) values (?,?,?,default) [42102-224]] [insert into item (item_name,price,quantity,id) values (?,?,?,default)]

at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:66) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]

at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:58) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]

at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:108) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]

at org.hibernate.engine.jdbc.internal.MutationStatementPreparerImpl$StatementPreparationTemplate.prepareStatement(MutationStatementPreparerImpl.java:110) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]

at org.hibernate.engine.jdbc.internal.MutationStatementPreparerImpl.prepareStatement(MutationStatementPreparerImpl.java:60) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]

at org.hibernate.id.insert.GetGeneratedKeysDelegate.prepareStatement(GetGeneratedKeysDelegate.java:86) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]

at org.hibernate.engine.jdbc.mutation.internal.ModelMutationHelper.lambda$identityPreparation$1(ModelMutationHelper.java:132) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]

at org.hibernate.engine.jdbc.mutation.internal.PreparedStatementDetailsStandard.resolveStatement(PreparedStatementDetailsStandard.java:87) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]

at org.hibernate.id.insert.GetGeneratedKeysDelegate.performInsert(GetGeneratedKeysDelegate.java:103) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]

at org.hibernate.engine.jdbc.mutation.internal.MutationExecutorPostInsertSingleTable.execute(MutationExecutorPostInsertSingleTable.java:100) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]

at org.hibernate.persister.entity.mutation.InsertCoordinator.doStaticInserts(InsertCoordinator.java:171) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]

at org.hibernate.persister.entity.mutation.InsertCoordinator.coordinateInsert(InsertCoordinator.java:112) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]

at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2860) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]

at org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:81) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]

at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:667) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]

at org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:290) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]

at org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:271) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]

at org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:321) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]

at org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:386) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]

at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:300) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]

at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:219) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]

at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:134) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]

at org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient(DefaultPersistEventListener.java:175) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]

at org.hibernate.event.internal.DefaultPersistEventListener.persist(DefaultPersistEventListener.java:93) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]

at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:77) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]

at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:54) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]

at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:127) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]

at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:766) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]

at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:750) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]

at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]

at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]

at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:311) ~[spring-orm-6.1.1.jar:6.1.1]

at jdk.proxy2/jdk.proxy2.$Proxy105.persist(Unknown Source) ~[na:na]

at hello.itemservice.repository.jpa.JpaItemRepositoryV3.save(JpaItemRepositoryV3.java:37) ~[main/:na]

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]

at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]

at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]

at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:352) ~[spring-aop-6.1.1.jar:6.1.1]

at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) ~[spring-aop-6.1.1.jar:6.1.1]

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-6.1.1.jar:6.1.1]

at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:765) ~[spring-aop-6.1.1.jar:6.1.1]

at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ~[spring-tx-6.1.1.jar:6.1.1]

... 32 common frames omitted

Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Table "ITEM" not found; SQL statement:

insert into item (item_name,price,quantity,id) values (?,?,?,default) [42102-224]

at org.h2.message.DbException.getJdbcSQLException(DbException.java:514) ~[h2-2.2.224.jar:2.2.224]

at org.h2.engine.SessionRemote.readException(SessionRemote.java:650) ~[h2-2.2.224.jar:2.2.224]

at org.h2.engine.SessionRemote.done(SessionRemote.java:619) ~[h2-2.2.224.jar:2.2.224]

at org.h2.command.CommandRemote.prepare(CommandRemote.java:78) ~[h2-2.2.224.jar:2.2.224]

at org.h2.command.CommandRemote.<init>(CommandRemote.java:50) ~[h2-2.2.224.jar:2.2.224]

at org.h2.engine.SessionRemote.prepareCommand(SessionRemote.java:487) ~[h2-2.2.224.jar:2.2.224]

at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1166) ~[h2-2.2.224.jar:2.2.224]

at org.h2.jdbc.JdbcPreparedStatement.<init>(JdbcPreparedStatement.java:93) ~[h2-2.2.224.jar:2.2.224]

at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:1094) ~[h2-2.2.224.jar:2.2.224]

at com.zaxxer.hikari.pool.ProxyConnection.prepareStatement(ProxyConnection.java:334) ~[HikariCP-5.0.1.jar:na]

at com.zaxxer.hikari.pool.HikariProxyConnection.prepareStatement(HikariProxyConnection.java) ~[HikariCP-5.0.1.jar:na]

at com.p6spy.engine.wrapper.ConnectionWrapper.prepareStatement(ConnectionWrapper.java:133) ~[p6spy-3.9.0.jar:na]

at org.hibernate.engine.jdbc.internal.MutationStatementPreparerImpl$2.doPrepare(MutationStatementPreparerImpl.java:58) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]

at org.hibernate.engine.jdbc.internal.MutationStatementPreparerImpl$StatementPreparationTemplate.prepareStatement(MutationStatementPreparerImpl.java:100) ~[hibernate-core-6.3.1.Final.jar:6.3.1.Final]

... 73 common frames omitted

2025-03-25T21:08:59.082+09:00  INFO 13524 --- [ main] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'

2025-03-25T21:08:59.084+09:00  INFO 13524 --- [ main] com.zaxxer.hikari.HikariDataSource  : HikariPool-1 - Shutdown initiated...

2025-03-25T21:08:59.088+09:00  INFO 13524 --- [ main] com.zaxxer.hikari.HikariDataSource  : HikariPool-1 - Shutdown completed.

image.png

답변해주신 문제를 해결하니 위와같은 문제가 발생합니다.

그래서

/itemservice-db/src/main/java/hello/itemservice/domain/

위 위치에 Qitem.java를 만들어주고

application-properties에

image.png

또 마이바티스@mapper 나 @param 어노테이션이 import가 안돼서

build gradle에 implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.3'

위의존성을 추가했습니다

위옵션을 추가하니까 해결이 되서 run이 되는데 위 방법을 사용해도 될까요?? 문제가 없을까요? 프로젝트를 진행하는데

소스 링크입니다.

0

안녕하세요, 안태승님, 인프런 AI 인턴입니다.

현재 JPAQueryFactory 생성자에서 “The constructor JPAQueryFactory(EntityManager) is undefined”라는 오류가 발생하고 계시네요. 이는 주로 QueryDSL 라이브러리의 호환성 문제나 잘못된 버전 설정에서 비롯될 수 있습니다. 문제 해결을 위한 몇 가지 단계를 제안드립니다.

1. QueryDSL 버전 확인

JPAQueryFactory의 생성자에서 EntityManager를 받을 수 없는 경우, 사용 중인 QueryDSL 버전과 호환성 문제일 수 있습니다. 최신 버전에서는 구조가 변경되었을 수 있으므로, 다음 버전 중 하나로 설정해 보시기 바랍니다:

// QueryDSL 의존성 설정 예시
implementation 'com.querydsl:querydsl-jpa:5.0.0' // 필요에 따라 버전 조정
annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jpa"

2. Annotation Processor 설정 확인

빌드가 정상적으로 이루어지기 위해서는 Annotation Processor가 올바르게 설정되어 있어야 합니다. 설정 파일에서 annotationProcessor 부분이 올바르게 설정되어 있는지 확인하세요.

3. 프로젝트 캐시 및 IntelliJ 설정 확인

  • 프로젝트에서 캐시 문제를 방지하기 위해, IntelliJ에서는 File -> Invalidate Caches / Restart를 통해 캐시를 제거하고 재시작해 보세요.
  • 설정에서 Annotation Processing이 활성화되어 있는지 확인하세요: Settings -> Build, Execution, Deployment -> Compiler -> Annotation Processors에서 Enable annotation processing 체크란이 활성화되어 있는지 확인하세요.

참고 링크

이전 수강생들이 유사한 문제를 경험했으며, 다음 관련 링크 또한 큰 도움이 될 수 있습니다:

위의 해당 링크들을 참조하여 문제를 해결할 수 있습니다. 추가적으로 궁금한 점이 있으시다면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏

안태승님의 프로필 이미지
안태승

작성한 질문수

질문하기