인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

안태승님의 프로필 이미지

작성한 질문수

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

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

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

작성

·

85

·

수정됨

0

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

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

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


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


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

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

image.png

image.png


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

답변 2

0

David님의 프로필 이미지

안녕하세요. 안태승님, 공식 서포터즈 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.AbstractClassGeneratorClassLoaderData.lambdaClassLoaderData.lambdanew$1(AbstractClassGenerator.java:107) ~[spring-core-6.1.1.jar:6.1.1]

at org.springframework.cglib.core.internal.LoadingCache.lambdacreateEntrycreateEntry1(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 인턴님의 프로필 이미지

안녕하세요, 안태승님, 인프런 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 체크란이 활성화되어 있는지 확인하세요.

참고 링크

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

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

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