월 17,600원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결실전! Querydsl
Where 다중 파라미터 사용, Null 처리관련 질문입니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요 :) 계묘년 새해 복 많이 받으시길 바랍니다. 강의 도중 allEq와 같은 메서드를 where()메서드에 넣게 되면 null 체크를 주의해야 한다고 하셔서 여러가지 Test를 돌려보았는데요 그 결과, return usernameEq(usernameCond).and(ageEq(ageCond));와 같이 체이닝을 하게되면 제일 첫 번째 메서드(여기서는 usernameEq(usernameCond))가 null일 경우 NullPointerException이 발생하는 것을 알았습니다.이걸 어떤 방식으로 처리해야할까요? 맨앞에 있는 것이 null인지 체크하고 그것을 제외한 조건들만 return 하는 방법도 생각했으나, 이 역시도 조건이 여러개라면 다시 첫번째 조건이 null인지 체크해야한다는 맹점이 있어서, 코드가 길어질것 같다는 생각이 듭니다.통상적으로 이런 경우 어떻게 대처하는 지 알려주시면 감사하겠습니다!다시 한 번 새해복 많이 받으세요!
- 미해결실전! Querydsl
QMember.member가 from에서는 오류가 안나는데 join에서는 오류가 발생합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 강사님 Querydsl4RepositorySupport를 만들어서 사용 중 member entity관련하여 이해하지 못할 오류가 발생하여서 질문드립니다.applyPagination(pageable, contentQuery -> contentQuery .select(Projections.constructor(MemberAccessLogPageDTO.class , memberAccessLog.id , memberAccessLog.loginYn , member.memberId , member.username , memberAccessLog.loginMethod , memberAccessLog.device , memberAccessLog.accessIp , memberAccessLog.accessTime )) .from(memberAccessLog) .leftJoin(member).fetchJoin() .on(memberAccessLog.memberId.eq(member.id)) .where(builder) ,countQuery -> countQuery .select(memberAccessLog.count()) .from(memberAccessLog) .where(builder) );querydsl구성을 위와같이 작성하여 기능을 구현하려고 했습니다.(Entity상으로는 memberAccessLog와 member는 join관계가 아니며, 외래키 설정또한 없습니다.)member를 from에서 단독 사용할 때는 문제가 없는데 위와 같이 join으로 사용하면 에러가 발생합니다.2023-01-04 17:13:57.241 ERROR 41936 --- [0.0-8009-exec-9] o.h.hql.internal.ast.ErrorTracker : line 3:19: unexpected token: Member2023-01-04 17:13:57.247 ERROR 41936 --- [0.0-8009-exec-9] o.h.hql.internal.ast.ErrorTracker : line 3:19: unexpected token: Memberantlr.NoViableAltException: unexpected token: Member at org.hibernate.hql.internal.antlr.HqlBaseParser.joinPath(HqlBaseParser.java:1925) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.hql.internal.antlr.HqlBaseParser.fromJoin(HqlBaseParser.java:1800) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.hql.internal.antlr.HqlBaseParser.fromClause(HqlBaseParser.java:1485) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.hql.internal.antlr.HqlBaseParser.selectFrom(HqlBaseParser.java:1171) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.hql.internal.antlr.HqlBaseParser.queryRule(HqlBaseParser.java:825) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.hql.internal.antlr.HqlBaseParser.selectStatement(HqlBaseParser.java:336) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.hql.internal.antlr.HqlBaseParser.statement(HqlBaseParser.java:200) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:294) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:189) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:144) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:113) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:73) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:162) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.internal.AbstractSharedSessionContract.getQueryPlan(AbstractSharedSessionContract.java:636) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:748) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:114) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at jdk.internal.reflect.GeneratedMethodAccessor143.invoke(Unknown Source) ~[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.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:362) ~[spring-orm-5.3.23.jar:5.3.23] at jdk.proxy2/jdk.proxy2.$Proxy137.createQuery(Unknown Source) ~[na:na] at jdk.internal.reflect.GeneratedMethodAccessor143.invoke(Unknown Source) ~[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-5.3.23.jar:5.3.23] at jdk.proxy2/jdk.proxy2.$Proxy137.createQuery(Unknown Source) ~[na:na] at com.querydsl.jpa.impl.AbstractJPAQuery.createQuery(AbstractJPAQuery.java:132) ~[querydsl-jpa-5.0.0.jar:na] at com.querydsl.jpa.impl.AbstractJPAQuery.createQuery(AbstractJPAQuery.java:125) ~[querydsl-jpa-5.0.0.jar:na] at com.querydsl.jpa.impl.AbstractJPAQuery.fetch(AbstractJPAQuery.java:242) ~[querydsl-jpa-5.0.0.jar:na] at com.sungnam.re100.admin.common.repository.Querydsl4RepositorySupport.applyPagination(Querydsl4RepositorySupport.java:84) ~[main/:na] at com.sungnam.re100.admin.member.domain.repository.MemberAccessLogQuerydslRepository.findAccessLogBySearchInfo(MemberAccessLogQuerydslRepository.java:74) ~[main/:na] at com.sungnam.re100.admin.member.domain.repository.MemberAccessLogQuerydslRepository$$FastClassBySpringCGLIB$$ecabc3a2.invoke(<generated>) ~[main/:na] at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.23.jar:5.3.23] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ~[spring-tx-5.3.23.jar:5.3.23] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708) ~[spring-aop-5.3.23.jar:5.3.23] at com.sungnam.re100.admin.member.domain.repository.MemberAccessLogQuerydslRepository$$EnhancerBySpringCGLIB$$667f1f19.findAccessLogBySearchInfo(<generated>) ~[main/:na] at com.sungnam.re100.admin.member.service.MemberService.findAccessLogBySearchInfo(MemberService.java:173) ~[main/:na] at com.sungnam.re100.admin.member.service.MemberService$$FastClassBySpringCGLIB$$c3876859.invoke(<generated>) ~[main/:na] at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.23.jar:5.3.23] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) ~[spring-tx-5.3.23.jar:5.3.23] at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) ~[spring-tx-5.3.23.jar:5.3.23] at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-5.3.23.jar:5.3.23] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708) ~[spring-aop-5.3.23.jar:5.3.23] at com.sungnam.re100.admin.member.service.MemberService$$EnhancerBySpringCGLIB$$d9703880.findAccessLogBySearchInfo(<generated>) ~[main/:na] at com.sungnam.re100.admin.member.rest.MemberRestController.memberAccessLogList(MemberRestController.java:131) ~[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.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.23.jar:5.3.23] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.23.jar:5.3.23] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.23.jar:5.3.23] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.23.jar:5.3.23] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.23.jar:5.3.23] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.23.jar:5.3.23] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071) ~[spring-webmvc-5.3.23.jar:5.3.23] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964) ~[spring-webmvc-5.3.23.jar:5.3.23] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.23.jar:5.3.23] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.3.23.jar:5.3.23] at javax.servlet.http.HttpServlet.service(HttpServlet.java:655) ~[tomcat-embed-core-9.0.65.jar:4.0.FR] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.23.jar:5.3.23] at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) ~[tomcat-embed-core-9.0.65.jar:4.0.FR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.65.jar:9.0.65] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at com.navercorp.lucy.security.xss.servletfilter.XssEscapeServletFilter.doFilter(XssEscapeServletFilter.java:36) ~[lucy-xss-servlet-2.0.1.jar:na] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.springframework.web.multipart.support.MultipartFilter.doFilterInternal(MultipartFilter.java:125) ~[spring-web-5.3.23.jar:5.3.23] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:337) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3] at com.sungnam.re100.admin.filter.AjaxSessionCheckFilter.doFilter(AjaxSessionCheckFilter.java:50) ~[main/:na] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:112) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:82) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:221) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) ~[spring-web-5.3.23.jar:5.3.23] at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) ~[spring-web-5.3.23.jar:5.3.23] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:433) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]2023-01-04 17:13:57.258 ERROR 41936 --- [0.0-8009-exec-9] c.s.r.a.exception.RestExceptionHandler : BadRequestExceptionorg.springframework.dao.InvalidDataAccessApiUsageException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: Member near line 3, column 19 [select memberAccessLog.id, memberAccessLog.loginYn, member1.memberId, member1.username, memberAccessLog.loginMethod, memberAccessLog.device, memberAccessLog.accessIp, memberAccessLog.accessTimefrom com.sungnam.re100.domain.member.MemberAccessLog memberAccessLog left join fetch Member member1 with memberAccessLog.memberId = member1.idorder by memberAccessLog.id desc]; nested exception is java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: Member near line 3, column 19 [select memberAccessLog.id, memberAccessLog.loginYn, member1.memberId, member1.username, memberAccessLog.loginMethod, memberAccessLog.device, memberAccessLog.accessIp, memberAccessLog.accessTimefrom com.sungnam.re100.domain.member.MemberAccessLog memberAccessLog left join fetch Member member1 with memberAccessLog.memberId = member1.idorder by memberAccessLog.id desc] at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:374) ~[spring-orm-5.3.23.jar:5.3.23] at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:235) ~[spring-orm-5.3.23.jar:5.3.23] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:551) ~[spring-orm-5.3.23.jar:5.3.23] at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61) ~[spring-tx-5.3.23.jar:5.3.23] at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242) ~[spring-tx-5.3.23.jar:5.3.23] at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152) ~[spring-tx-5.3.23.jar:5.3.23] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708) ~[spring-aop-5.3.23.jar:5.3.23] at com.sungnam.re100.admin.member.domain.repository.MemberAccessLogQuerydslRepository$$EnhancerBySpringCGLIB$$667f1f19.findAccessLogBySearchInfo(<generated>) ~[main/:na] at com.sungnam.re100.admin.member.service.MemberService.findAccessLogBySearchInfo(MemberService.java:173) ~[main/:na] at com.sungnam.re100.admin.member.service.MemberService$$FastClassBySpringCGLIB$$c3876859.invoke(<generated>) ~[main/:na] at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.23.jar:5.3.23] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:123) ~[spring-tx-5.3.23.jar:5.3.23] at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:388) ~[spring-tx-5.3.23.jar:5.3.23] at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-tx-5.3.23.jar:5.3.23] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708) ~[spring-aop-5.3.23.jar:5.3.23] at com.sungnam.re100.admin.member.service.MemberService$$EnhancerBySpringCGLIB$$d9703880.findAccessLogBySearchInfo(<generated>) ~[main/:na] at com.sungnam.re100.admin.member.rest.MemberRestController.memberAccessLogList(MemberRestController.java:131) ~[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.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-5.3.23.jar:5.3.23] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-5.3.23.jar:5.3.23] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) ~[spring-webmvc-5.3.23.jar:5.3.23] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) ~[spring-webmvc-5.3.23.jar:5.3.23] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.23.jar:5.3.23] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.23.jar:5.3.23] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1071) ~[spring-webmvc-5.3.23.jar:5.3.23] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964) ~[spring-webmvc-5.3.23.jar:5.3.23] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.23.jar:5.3.23] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.3.23.jar:5.3.23] at javax.servlet.http.HttpServlet.service(HttpServlet.java:655) ~[tomcat-embed-core-9.0.65.jar:4.0.FR] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.23.jar:5.3.23] at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) ~[tomcat-embed-core-9.0.65.jar:4.0.FR] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.65.jar:9.0.65] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at com.navercorp.lucy.security.xss.servletfilter.XssEscapeServletFilter.doFilter(XssEscapeServletFilter.java:36) ~[lucy-xss-servlet-2.0.1.jar:na] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.springframework.web.multipart.support.MultipartFilter.doFilterInternal(MultipartFilter.java:125) ~[spring-web-5.3.23.jar:5.3.23] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:337) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:122) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:116) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:109) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3] at com.sungnam.re100.admin.filter.AjaxSessionCheckFilter.doFilter(AjaxSessionCheckFilter.java:50) ~[main/:na] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:112) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:82) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) ~[spring-web-5.3.23.jar:5.3.23] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:346) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:221) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186) ~[spring-security-web-5.7.3.jar:5.7.3] at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) ~[spring-web-5.3.23.jar:5.3.23] at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) ~[spring-web-5.3.23.jar:5.3.23] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.coyote.ajp.AjpProcessor.service(AjpProcessor.java:433) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:890) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1789) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.65.jar:9.0.65] at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]Caused by: java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: Member near line 3, column 19 [select memberAccessLog.id, memberAccessLog.loginYn, member1.memberId, member1.username, memberAccessLog.loginMethod, memberAccessLog.device, memberAccessLog.accessIp, memberAccessLog.accessTimefrom com.sungnam.re100.domain.member.MemberAccessLog memberAccessLog left join fetch Member member1 with memberAccessLog.memberId = member1.idorder by memberAccessLog.id desc] at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:138) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:181) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:188) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:757) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:114) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at jdk.internal.reflect.GeneratedMethodAccessor143.invoke(Unknown Source) ~[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.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:362) ~[spring-orm-5.3.23.jar:5.3.23] at jdk.proxy2/jdk.proxy2.$Proxy137.createQuery(Unknown Source) ~[na:na] at jdk.internal.reflect.GeneratedMethodAccessor143.invoke(Unknown Source) ~[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-5.3.23.jar:5.3.23] at jdk.proxy2/jdk.proxy2.$Proxy137.createQuery(Unknown Source) ~[na:na] at com.querydsl.jpa.impl.AbstractJPAQuery.createQuery(AbstractJPAQuery.java:132) ~[querydsl-jpa-5.0.0.jar:na] at com.querydsl.jpa.impl.AbstractJPAQuery.createQuery(AbstractJPAQuery.java:125) ~[querydsl-jpa-5.0.0.jar:na] at com.querydsl.jpa.impl.AbstractJPAQuery.fetch(AbstractJPAQuery.java:242) ~[querydsl-jpa-5.0.0.jar:na] at com.sungnam.re100.admin.common.repository.Querydsl4RepositorySupport.applyPagination(Querydsl4RepositorySupport.java:84) ~[main/:na] at com.sungnam.re100.admin.member.domain.repository.MemberAccessLogQuerydslRepository.findAccessLogBySearchInfo(MemberAccessLogQuerydslRepository.java:74) ~[main/:na] at com.sungnam.re100.admin.member.domain.repository.MemberAccessLogQuerydslRepository$$FastClassBySpringCGLIB$$ecabc3a2.invoke(<generated>) ~[main/:na] at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.23.jar:5.3.23] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) ~[spring-aop-5.3.23.jar:5.3.23] at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ~[spring-tx-5.3.23.jar:5.3.23] ... 103 common frames omittedCaused by: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: Member near line 3, column 19 [select memberAccessLog.id, memberAccessLog.loginYn, member1.memberId, member1.username, memberAccessLog.loginMethod, memberAccessLog.device, memberAccessLog.accessIp, memberAccessLog.accessTimefrom com.sungnam.re100.domain.member.MemberAccessLog memberAccessLog left join fetch Member member1 with memberAccessLog.memberId = member1.idorder by memberAccessLog.id desc] at org.hibernate.hql.internal.ast.QuerySyntaxException.convert(QuerySyntaxException.java:74) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.hql.internal.ast.ErrorTracker.throwQueryException(ErrorTracker.java:93) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.hql.internal.ast.QueryTranslatorImpl.parse(QueryTranslatorImpl.java:301) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:189) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:144) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:113) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:73) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:162) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.internal.AbstractSharedSessionContract.getQueryPlan(AbstractSharedSessionContract.java:636) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:748) ~[hibernate-core-5.6.11.Final.jar:5.6.11.Final] ... 125 common frames omittedCaused by: java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: Member near line 3, column 19 [select memberAccessLog.id, memberAccessLog.loginYn, member1.memberId, member1.username, memberAccessLog.loginMethod, memberAccessLog.device, memberAccessLog.accessIp, memberAccessLog.accessTimeCaused by: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: Member near line 3, column 19 [select memberAccessLog.id, memberAccessLog.loginYn, member1.memberId, member1.username, memberAccessLog.loginMethod, memberAccessLog.device, memberAccessLog.accessIp, memberAccessLog.accessTime 오류 로그는 위와 같습니다. 최대한 타고 들어가서 확인한다고 했는데 QueryTranslatorImpl의 doCompile에서 final HqlParser parser = parse( true );위의 라인에서 parse를 호출하는 부분까지만 타고 들어가서 확인했습니다...더 들어가도 간단한 소스 수정만으로는 힘들 것 같더군요. 혹시 QueryDSL이나 EntityManager, EntityPath, JpaEntityInformation 같은 걸 사용 할 때Join절에 Member를 쓰면 오류가 발생하는 기믹? 예약어? 같은 게 있을까요? Member entity를 다른 이름으로 바꾸면 문제없이 작동되고Member entity를 단독으로 from절에 사용할때는 아무런 문제가 없어서혹시 예약어 같은 개념으로 Member를 사용못한다던가 하는 이유가 있을까 싶어 문의드립니다.
- 미해결실전! Querydsl
h2 console 에 테이블이 보이질 않습니다.
application.yml spring: datasource: url: jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 username: sa password: driver-class-name: org.h2.Driver jpa: hibernate: ddl-auto: create properties: hibernate: # show_sql: true format_aql: true default_batch_fetch_size: 100 logging: level: org.hibernate.SQL: debug org.hibernate.type: trace build.gradlebuildscript { dependencies { classpath("gradle.plugin.com.ewerk.gradle.plugins:querydsl-plugin:1.0.10") } } plugins {id 'org.springframework.boot' version '2.4.1' id 'io.spring.dependency-management' version '1.0.10.RELEASE' id 'java' } apply plugin: 'io.spring.dependency-management' apply plugin: "com.ewerk.gradle.plugins.querydsl" group = 'jpabook' version = '1.8.1' sourceCompatibility = '11' configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-devtools' implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.8.1' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'com.fasterxml.jackson.datatype:jackson-datatype-hibernate5' testImplementation 'org.projectlombok:lombok:1.18.24' testImplementation 'org.projectlombok:lombok:1.18.24' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'org.assertj:assertj-core:3.23.1' //JUnit4 추가 testImplementation("org.junit.vintage:junit-vintage-engine") { exclude group: "org.hamcrest", module: "hamcrest-core" } //querydsl 추가 implementation 'com.querydsl:querydsl-jpa' //querydsl 추가 implementation 'com.querydsl:querydsl-apt' } //querydsl 추가 //def querydslDir = 'src/main/generated' def querydslDir = "$buildDir/generated/querydsl" querydsl { library = "com.querydsl:querydsl-apt" jpa = true querydslSourcesDir = querydslDir } sourceSets { main { java { srcDirs = ['src/main/java', querydslDir] } } } compileQuerydsl{ options.annotationProcessorPath = configurations.querydsl } configurations { querydsl.extendsFrom compileClasspath } tasks.named('test') { useJUnitPlatform() } 로그입니다.2023-01-02 23:24:13.584 INFO 1432 --- [ restartedMain] jpabook.jpashop.JpashopApplication : Starting JpashopApplication using Java 11.0.15 on DESKTOP-I7K9HJ3 with PID 1432 (C:\Users\kom12\OneDrive\Desktop\IJ\jpashop1-practice\out\production\classes started by kom12 in C:\Users\kom12\OneDrive\Desktop\IJ\jpashop1-practice) 2023-01-02 23:24:13.588 INFO 1432 --- [ restartedMain] jpabook.jpashop.JpashopApplication : No active profile set, falling back to default profiles: default 2023-01-02 23:24:13.664 INFO 1432 --- [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : Devtools property defaults active! Set 'spring.devtools.add-properties' to 'false' to disable 2023-01-02 23:24:13.664 INFO 1432 --- [ restartedMain] .e.DevToolsPropertyDefaultsPostProcessor : For additional web related logging consider setting the 'logging.level.web' property to 'DEBUG' 2023-01-02 23:24:14.910 INFO 1432 --- [ restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode. 2023-01-02 23:24:15.052 INFO 1432 --- [ restartedMain] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 115 ms. Found 1 JPA repository interfaces. 2023-01-02 23:24:16.174 INFO 1432 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http) 2023-01-02 23:24:16.191 INFO 1432 --- [ restartedMain] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2023-01-02 23:24:16.192 INFO 1432 --- [ restartedMain] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.41] 2023-01-02 23:24:16.321 INFO 1432 --- [ restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2023-01-02 23:24:16.321 INFO 1432 --- [ restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2656 ms 2023-01-02 23:24:16.476 INFO 1432 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... 2023-01-02 23:24:16.728 INFO 1432 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. 2023-01-02 23:24:16.740 INFO 1432 --- [ restartedMain] o.s.b.a.h2.H2ConsoleAutoConfiguration : H2 console available at '/h2-console'. Database available at 'jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08' 2023-01-02 23:24:16.919 INFO 1432 --- [ restartedMain] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default] 2023-01-02 23:24:16.996 INFO 1432 --- [ restartedMain] org.hibernate.Version : HHH000412: Hibernate ORM core version 5.4.25.Final 2023-01-02 23:24:17.182 INFO 1432 --- [ restartedMain] o.hibernate.annotations.common.Version : HCANN000001: Hibernate Commons Annotations {5.1.2.Final} 2023-01-02 23:24:17.398 INFO 1432 --- [ restartedMain] org.hibernate.dialect.Dialect : HHH000400: Using dialect: org.hibernate.dialect.H2Dialect 2023-01-02 23:24:18.411 INFO 1432 --- [ restartedMain] p6spy : #1672669458411 | took 1ms | statement | connection 3| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 drop table if exists category CASCADE drop table if exists category CASCADE ; 2023-01-02 23:24:18.411 INFO 1432 --- [ restartedMain] p6spy : #1672669458411 | took 0ms | statement | connection 3| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 drop table if exists category_item CASCADE drop table if exists category_item CASCADE ; 2023-01-02 23:24:18.411 INFO 1432 --- [ restartedMain] p6spy : #1672669458411 | took 0ms | statement | connection 3| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 drop table if exists delivery CASCADE drop table if exists delivery CASCADE ; 2023-01-02 23:24:18.411 INFO 1432 --- [ restartedMain] p6spy : #1672669458411 | took 0ms | statement | connection 3| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 drop table if exists item CASCADE drop table if exists item CASCADE ; 2023-01-02 23:24:18.412 INFO 1432 --- [ restartedMain] p6spy : #1672669458412 | took 0ms | statement | connection 3| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 drop table if exists member CASCADE drop table if exists member CASCADE ; 2023-01-02 23:24:18.412 INFO 1432 --- [ restartedMain] p6spy : #1672669458412 | took 0ms | statement | connection 3| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 drop table if exists order_item CASCADE drop table if exists order_item CASCADE ; 2023-01-02 23:24:18.412 INFO 1432 --- [ restartedMain] p6spy : #1672669458412 | took 0ms | statement | connection 3| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 drop table if exists orders CASCADE drop table if exists orders CASCADE ; 2023-01-02 23:24:18.412 INFO 1432 --- [ restartedMain] p6spy : #1672669458412 | took 0ms | statement | connection 3| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 drop sequence if exists hibernate_sequence drop sequence if exists hibernate_sequence; 2023-01-02 23:24:18.416 INFO 1432 --- [ restartedMain] p6spy : #1672669458416 | took 1ms | statement | connection 4| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 create sequence hibernate_sequence start with 1 increment by 1 create sequence hibernate_sequence start with 1 increment by 1; 2023-01-02 23:24:18.420 INFO 1432 --- [ restartedMain] p6spy : #1672669458420 | took 4ms | statement | connection 4| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 create table category (category_id bigint not null, name varchar(255), parent_id bigint, primary key (category_id)) create table category (category_id bigint not null, name varchar(255), parent_id bigint, primary key (category_id)); 2023-01-02 23:24:18.421 INFO 1432 --- [ restartedMain] p6spy : #1672669458421 | took 0ms | statement | connection 4| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 create table category_item (category_id bigint not null, item_id bigint not null) create table category_item (category_id bigint not null, item_id bigint not null); 2023-01-02 23:24:18.421 INFO 1432 --- [ restartedMain] p6spy : #1672669458421 | took 0ms | statement | connection 4| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 create table delivery (delivery_id bigint not null, city varchar(255), street varchar(255), zipcode varchar(255), status varchar(255), primary key (delivery_id)) create table delivery (delivery_id bigint not null, city varchar(255), street varchar(255), zipcode varchar(255), status varchar(255), primary key (delivery_id)); 2023-01-02 23:24:18.422 INFO 1432 --- [ restartedMain] p6spy : #1672669458422 | took 0ms | statement | connection 4| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 create table item (dtype varchar(31) not null, item_id bigint not null, name varchar(255), price integer not null, stock_quantity integer not null, artist varchar(255), etc varchar(255), author varchar(255), isbn varchar(255), actor varchar(255), director varchar(255), primary key (item_id)) create table item (dtype varchar(31) not null, item_id bigint not null, name varchar(255), price integer not null, stock_quantity integer not null, artist varchar(255), etc varchar(255), author varchar(255), isbn varchar(255), actor varchar(255), director varchar(255), primary key (item_id)); 2023-01-02 23:24:18.423 INFO 1432 --- [ restartedMain] p6spy : #1672669458423 | took 1ms | statement | connection 4| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 create table member (member_id bigint not null, city varchar(255), street varchar(255), zipcode varchar(255), name varchar(255), primary key (member_id)) create table member (member_id bigint not null, city varchar(255), street varchar(255), zipcode varchar(255), name varchar(255), primary key (member_id)); 2023-01-02 23:24:18.424 INFO 1432 --- [ restartedMain] p6spy : #1672669458424 | took 0ms | statement | connection 4| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 create table order_item (order_item_id bigint not null, count integer not null, order_price integer not null, item_id bigint, order_id bigint, primary key (order_item_id)) create table order_item (order_item_id bigint not null, count integer not null, order_price integer not null, item_id bigint, order_id bigint, primary key (order_item_id)); 2023-01-02 23:24:18.425 INFO 1432 --- [ restartedMain] p6spy : #1672669458425 | took 0ms | statement | connection 4| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 create table orders (order_id bigint not null, order_date timestamp, status varchar(255), delivery_id bigint, member_id bigint, primary key (order_id)) create table orders (order_id bigint not null, order_date timestamp, status varchar(255), delivery_id bigint, member_id bigint, primary key (order_id)); 2023-01-02 23:24:18.432 INFO 1432 --- [ restartedMain] p6spy : #1672669458432 | took 6ms | statement | connection 4| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 alter table category add constraint FK2y94svpmqttx80mshyny85wqr foreign key (parent_id) references category alter table category add constraint FK2y94svpmqttx80mshyny85wqr foreign key (parent_id) references category; 2023-01-02 23:24:18.433 INFO 1432 --- [ restartedMain] p6spy : #1672669458433 | took 0ms | statement | connection 4| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 alter table category_item add constraint FKu8b4lwqutcdq3363gf6mlujq foreign key (item_id) references item alter table category_item add constraint FKu8b4lwqutcdq3363gf6mlujq foreign key (item_id) references item; 2023-01-02 23:24:18.434 INFO 1432 --- [ restartedMain] p6spy : #1672669458434 | took 0ms | statement | connection 4| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 alter table category_item add constraint FKcq2n0opf5shyh84ex1fhukcbh foreign key (category_id) references category alter table category_item add constraint FKcq2n0opf5shyh84ex1fhukcbh foreign key (category_id) references category; 2023-01-02 23:24:18.435 INFO 1432 --- [ restartedMain] p6spy : #1672669458435 | took 0ms | statement | connection 4| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 alter table order_item add constraint FKija6hjjiit8dprnmvtvgdp6ru foreign key (item_id) references item alter table order_item add constraint FKija6hjjiit8dprnmvtvgdp6ru foreign key (item_id) references item; 2023-01-02 23:24:18.437 INFO 1432 --- [ restartedMain] p6spy : #1672669458437 | took 1ms | statement | connection 4| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 alter table order_item add constraint FKt4dc2r9nbvbujrljv3e23iibt foreign key (order_id) references orders alter table order_item add constraint FKt4dc2r9nbvbujrljv3e23iibt foreign key (order_id) references orders; 2023-01-02 23:24:18.438 INFO 1432 --- [ restartedMain] p6spy : #1672669458438 | took 0ms | statement | connection 4| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 alter table orders add constraint FKtkrur7wg4d8ax0pwgo0vmy20c foreign key (delivery_id) references delivery alter table orders add constraint FKtkrur7wg4d8ax0pwgo0vmy20c foreign key (delivery_id) references delivery; 2023-01-02 23:24:18.439 INFO 1432 --- [ restartedMain] p6spy : #1672669458439 | took 0ms | statement | connection 4| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 alter table orders add constraint FKpktxwhj3x9m4gth5ff6bkqgeb foreign key (member_id) references member alter table orders add constraint FKpktxwhj3x9m4gth5ff6bkqgeb foreign key (member_id) references member; 2023-01-02 23:24:18.442 INFO 1432 --- [ restartedMain] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] 2023-01-02 23:24:18.450 INFO 1432 --- [ restartedMain] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default' 2023-01-02 23:24:18.465 INFO 1432 --- [ restartedMain] o.s.b.d.a.OptionalLiveReloadServer : LiveReload server is running on port 35729 2023-01-02 23:24:18.658 INFO 1432 --- [ restartedMain] p6spy : #1672669458658 | took 11ms | statement | connection 6| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 call next value for hibernate_sequence call next value for hibernate_sequence; 2023-01-02 23:24:18.695 INFO 1432 --- [ restartedMain] p6spy : #1672669458695 | took 0ms | statement | connection 6| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 call next value for hibernate_sequence call next value for hibernate_sequence; 2023-01-02 23:24:18.696 INFO 1432 --- [ restartedMain] p6spy : #1672669458696 | took 0ms | statement | connection 6| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 call next value for hibernate_sequence call next value for hibernate_sequence; 2023-01-02 23:24:18.700 INFO 1432 --- [ restartedMain] p6spy : #1672669458700 | took 0ms | statement | connection 6| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 call next value for hibernate_sequence call next value for hibernate_sequence; 2023-01-02 23:24:18.702 INFO 1432 --- [ restartedMain] p6spy : #1672669458702 | took 0ms | statement | connection 6| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 call next value for hibernate_sequence call next value for hibernate_sequence; 2023-01-02 23:24:18.705 INFO 1432 --- [ restartedMain] p6spy : #1672669458705 | took 0ms | statement | connection 6| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 call next value for hibernate_sequence call next value for hibernate_sequence; 2023-01-02 23:24:18.705 INFO 1432 --- [ restartedMain] p6spy : #1672669458705 | took 0ms | statement | connection 6| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 call next value for hibernate_sequence call next value for hibernate_sequence; 2023-01-02 23:24:18.736 INFO 1432 --- [ restartedMain] p6spy : #1672669458736 | took 0ms | statement | connection 6| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 insert into member (city, street, zipcode, name, member_id) values (?, ?, ?, ?, ?) insert into member (city, street, zipcode, name, member_id) values ('서울', '1', '1111', 'userA', 1); 2023-01-02 23:24:18.738 INFO 1432 --- [ restartedMain] p6spy : #1672669458738 | took 0ms | statement | connection 6| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 insert into item (name, price, stock_quantity, author, isbn, dtype, item_id) values (?, ?, ?, ?, ?, 'B', ?) insert into item (name, price, stock_quantity, author, isbn, dtype, item_id) values ('JPA1 BOOK', 10000, 100, NULL, NULL, 'B', 2); 2023-01-02 23:24:18.738 INFO 1432 --- [ restartedMain] p6spy : #1672669458738 | took 0ms | statement | connection 6| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 insert into item (name, price, stock_quantity, author, isbn, dtype, item_id) values (?, ?, ?, ?, ?, 'B', ?) insert into item (name, price, stock_quantity, author, isbn, dtype, item_id) values ('JPA2 BOOK', 20000, 100, NULL, NULL, 'B', 3); 2023-01-02 23:24:18.739 INFO 1432 --- [ restartedMain] p6spy : #1672669458739 | took 0ms | statement | connection 6| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 insert into delivery (city, street, zipcode, status, delivery_id) values (?, ?, ?, ?, ?) insert into delivery (city, street, zipcode, status, delivery_id) values ('서울', '1', '1111', NULL, 5); 2023-01-02 23:24:18.745 INFO 1432 --- [ restartedMain] p6spy : #1672669458745 | took 0ms | statement | connection 6| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 insert into orders (delivery_id, member_id, order_date, status, order_id) values (?, ?, ?, ?, ?) insert into orders (delivery_id, member_id, order_date, status, order_id) values (5, 1, '2023-01-02T23:24:18.700+0900', 'ORDER', 4); 2023-01-02 23:24:18.746 INFO 1432 --- [ restartedMain] p6spy : #1672669458746 | took 0ms | statement | connection 6| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 insert into order_item (count, item_id, order_id, order_price, order_item_id) values (?, ?, ?, ?, ?) insert into order_item (count, item_id, order_id, order_price, order_item_id) values (1, 2, 4, 10000, 6); 2023-01-02 23:24:18.746 INFO 1432 --- [ restartedMain] p6spy : #1672669458746 | took 0ms | statement | connection 6| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 insert into order_item (count, item_id, order_id, order_price, order_item_id) values (?, ?, ?, ?, ?) insert into order_item (count, item_id, order_id, order_price, order_item_id) values (2, 3, 4, 20000, 7); 2023-01-02 23:24:18.748 INFO 1432 --- [ restartedMain] p6spy : #1672669458748 | took 0ms | statement | connection 6| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 update item set name=?, price=?, stock_quantity=?, author=?, isbn=? where item_id=? update item set name='JPA1 BOOK', price=10000, stock_quantity=99, author=NULL, isbn=NULL where item_id=2; 2023-01-02 23:24:18.749 INFO 1432 --- [ restartedMain] p6spy : #1672669458749 | took 0ms | statement | connection 6| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 update item set name=?, price=?, stock_quantity=?, author=?, isbn=? where item_id=? update item set name='JPA2 BOOK', price=20000, stock_quantity=98, author=NULL, isbn=NULL where item_id=3; 2023-01-02 23:24:18.751 INFO 1432 --- [ restartedMain] p6spy : #1672669458751 | took 0ms | commit | connection 6| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 ; 2023-01-02 23:24:18.753 INFO 1432 --- [ restartedMain] p6spy : #1672669458753 | took 0ms | statement | connection 7| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 call next value for hibernate_sequence call next value for hibernate_sequence; 2023-01-02 23:24:18.753 INFO 1432 --- [ restartedMain] p6spy : #1672669458753 | took 0ms | statement | connection 7| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 call next value for hibernate_sequence call next value for hibernate_sequence; 2023-01-02 23:24:18.753 INFO 1432 --- [ restartedMain] p6spy : #1672669458753 | took 0ms | statement | connection 7| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 call next value for hibernate_sequence call next value for hibernate_sequence; 2023-01-02 23:24:18.753 INFO 1432 --- [ restartedMain] p6spy : #1672669458753 | took 0ms | statement | connection 7| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 call next value for hibernate_sequence call next value for hibernate_sequence; 2023-01-02 23:24:18.754 INFO 1432 --- [ restartedMain] p6spy : #1672669458754 | took 0ms | statement | connection 7| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 call next value for hibernate_sequence call next value for hibernate_sequence; 2023-01-02 23:24:18.754 INFO 1432 --- [ restartedMain] p6spy : #1672669458754 | took 0ms | statement | connection 7| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 call next value for hibernate_sequence call next value for hibernate_sequence; 2023-01-02 23:24:18.754 INFO 1432 --- [ restartedMain] p6spy : #1672669458754 | took 0ms | statement | connection 7| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 call next value for hibernate_sequence call next value for hibernate_sequence; 2023-01-02 23:24:18.755 INFO 1432 --- [ restartedMain] p6spy : #1672669458755 | took 0ms | statement | connection 7| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 insert into member (city, street, zipcode, name, member_id) values (?, ?, ?, ?, ?) insert into member (city, street, zipcode, name, member_id) values ('진주', '2', '2222', 'userB', 8); 2023-01-02 23:24:18.755 INFO 1432 --- [ restartedMain] p6spy : #1672669458755 | took 0ms | statement | connection 7| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 insert into item (name, price, stock_quantity, author, isbn, dtype, item_id) values (?, ?, ?, ?, ?, 'B', ?) insert into item (name, price, stock_quantity, author, isbn, dtype, item_id) values ('SPRING1 BOOK', 20000, 200, NULL, NULL, 'B', 9); 2023-01-02 23:24:18.756 INFO 1432 --- [ restartedMain] p6spy : #1672669458756 | took 0ms | statement | connection 7| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 insert into item (name, price, stock_quantity, author, isbn, dtype, item_id) values (?, ?, ?, ?, ?, 'B', ?) insert into item (name, price, stock_quantity, author, isbn, dtype, item_id) values ('SPRING2 BOOK', 40000, 300, NULL, NULL, 'B', 10); 2023-01-02 23:24:18.756 INFO 1432 --- [ restartedMain] p6spy : #1672669458756 | took 0ms | statement | connection 7| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 insert into delivery (city, street, zipcode, status, delivery_id) values (?, ?, ?, ?, ?) insert into delivery (city, street, zipcode, status, delivery_id) values ('진주', '2', '2222', NULL, 12); 2023-01-02 23:24:18.756 INFO 1432 --- [ restartedMain] p6spy : #1672669458756 | took 0ms | statement | connection 7| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 insert into orders (delivery_id, member_id, order_date, status, order_id) values (?, ?, ?, ?, ?) insert into orders (delivery_id, member_id, order_date, status, order_id) values (12, 8, '2023-01-02T23:24:18.753+0900', 'ORDER', 11); 2023-01-02 23:24:18.757 INFO 1432 --- [ restartedMain] p6spy : #1672669458757 | took 0ms | statement | connection 7| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 insert into order_item (count, item_id, order_id, order_price, order_item_id) values (?, ?, ?, ?, ?) insert into order_item (count, item_id, order_id, order_price, order_item_id) values (3, 9, 11, 20000, 13); 2023-01-02 23:24:18.757 INFO 1432 --- [ restartedMain] p6spy : #1672669458757 | took 0ms | statement | connection 7| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 insert into order_item (count, item_id, order_id, order_price, order_item_id) values (?, ?, ?, ?, ?) insert into order_item (count, item_id, order_id, order_price, order_item_id) values (4, 10, 11, 40000, 14); 2023-01-02 23:24:18.757 INFO 1432 --- [ restartedMain] p6spy : #1672669458757 | took 0ms | statement | connection 7| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 update item set name=?, price=?, stock_quantity=?, author=?, isbn=? where item_id=? update item set name='SPRING1 BOOK', price=20000, stock_quantity=197, author=NULL, isbn=NULL where item_id=9; 2023-01-02 23:24:18.758 INFO 1432 --- [ restartedMain] p6spy : #1672669458758 | took 0ms | statement | connection 7| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 update item set name=?, price=?, stock_quantity=?, author=?, isbn=? where item_id=? update item set name='SPRING2 BOOK', price=40000, stock_quantity=296, author=NULL, isbn=NULL where item_id=10; 2023-01-02 23:24:18.758 INFO 1432 --- [ restartedMain] p6spy : #1672669458758 | took 0ms | commit | connection 7| url jdbc:h2:mem:6f8c6a84-cb23-479e-9692-b04021f75d08 ; 2023-01-02 23:24:19.178 WARN 1432 --- [ restartedMain] 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 2023-01-02 23:24:19.291 INFO 1432 --- [ restartedMain] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor' 2023-01-02 23:24:19.388 INFO 1432 --- [ restartedMain] o.s.b.a.w.s.WelcomePageHandlerMapping : Adding welcome page: class path resource [static/index.html] 2023-01-02 23:24:19.623 INFO 1432 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path '' 2023-01-02 23:24:19.631 INFO 1432 --- [ restartedMain] jpabook.jpashop.JpashopApplication : Started JpashopApplication in 6.631 seconds (JVM running for 7.385) 잘되던 h2 데이터베이스가 어느순간부터 테이블이 보이질 않습니다.. ㅠㅠ모든 방법을 찾아봤는데 해결이 안되어 질문드립니다
- 미해결실전! Querydsl
sqlFunction 대체문?
@Test public void sqlFunction() throws Exception{ String result = queryFactory .select(Expressions.stringTemplate("function('replace', {0}, {1}, {2})", member2.username, "member", "M")) .from(member2) .fetchFirst(); System.out.println("result = " + result); } @Test public void sqlFunctionAlternate() throws Exception{ queryFactory .update(member2) .set(member2.username,replace("member","member","M")) .execute(); List<Member2> result = queryFactory .selectFrom(member2) .fetch(); System.out.println("result = " + result); }위 예제를 아래처럼 만들어봤는데 모든 엔티티들의 username=M 으로 나옵니다. 어떻게 하면 sqlFunction 사용하지않고 같은 결과를 만들수 있을까요>
- 해결됨실전! Querydsl
hastext import?
hasText 를 불러올수없는데import 해줘야할것도 없는것같은데 어떻게 해결해야할까요?
- 해결됨실전! Querydsl
컬렉션 엔티티 Lazy 초기화 질문드립니다.
안녕하세요. 서비스에서 select 해온 Entity에 toMany 연관관계 필드를 초기화 하는 부분에 대해 궁금해 질문드립니다.class AEntity{ @Id private Long id; @OneToMany(mappedBy=aEntity) private List<BEntity> bEntitise = new ArrayList<>(): }class BEntity{ @Id private Long id; @ManyToOne(fetch = FetchType.Lazy) @JoinColumn(name="a_id") private AEntity aEntity; }이렇게 서로 양방향인 엔티티가 있다고 했을 때class AService{ public AEntity findEntity(Long id){ AEntity findEntity = aRepository.findById(id).get(); //findEntity의 BEntityList를 lazy 초기화 하기 위한 코드 findEntity.getBEntities().size(); return findEntity; } }서비스에서 엔티티를 찾아 컨트롤러로 리턴해주어 컨트롤러에서 dto로 변환 후, Body에 담아 보여주고 있습니다.그런데 findEntity의 BEntities 필드를 서비스에서 초기화 시켜준 후 컨트롤러에서 DTO로 변환해야 LazyInitializationException이 발생하지 않아서 findEntity.getBEntities().size();이렇게 초기화를 해주는 코드를 작성하였는데해당 코드가 뜬금없이 들어가 있는 느낌이라 보통 컬렉션 Lazy 엔티티를 초기화할 때 저렇게 사용해도 되는지 궁금해서 질문드립니다.(fetch 조인은 사용하지 않는다는 가정입니다.)
- 미해결실전! Querydsl
멀티모듈 JPAQueryFactory 빈 여러개 생성
안녕하세요 멀티모듈을 적용한 프로젝트를 진행중인데 querydsl 관련 궁금한게 생겨서 질문 드립니다.멀티 모듈을 적용해 프로젝트를 진행중입니다.모듈은 크게 3가지가 있는데api - controller 및 시큐리티 설정restaurant - 음식점에 관련된 코드(service, repository, entity)user - 유저 정보에 대한 코드 (service, repository, entity)api는 restaurant 와 user 모듈을 implementation 받고 있습니다.이렇게 구성이 되어 있는데querydsl을 restaurant 모듈과 user 모듈 둘 다 적용하려다 보니각각 build.gradle에 querydsl 설정을 해주어야 하고JPAQueryFactory 빈 등록 또한 각각 해주어야 합니다.api 에 공통적으로 등록하려다 보니 api 모듈은 querydsl을 사용하지 않습니다.설정을 위해 공통적인 빈 설정을 api 모듈에서 해줘도 될까요?아니면 각각 모듈마다 빈등록을 하는 것이 좋을까요?(이렇게 똑같은 빈 등록을 여러 모듈에서 해주어도 되는 걸까요?)모듈은 여러개지만 하나의 DB에 연결하여 사용중입니다.
- 해결됨실전! Querydsl
Repository 메소드의 파라미터 질문드립니다.
안녕하세요 강의 잘 듣고 있습니다.강의를 듣는 도중에 궁금한 점이 있어서 이렇게 질문 드립니다.컨트롤러의 return타입은 entity를 캡슐화 하기 위해 DTO를 사용하고, 각 Layer 별로 데이터를 주고 받을 때 DTO 또는 Entity를 상황에 맞게 사용하고있습니다. 또한 Repository에서는(Service -> Repository) Entity를 넘겨주어서 사용하도록 하고 있습니다. 이유는 DTO는 Getter,Setter로 가변이지만 Entity는 불변객체이기에 영속 계층에서는 가변 객체를 파라미터로 넘겨준다면 위험하다고 생각해서입니다.그런데 강의에서는 DTO를 Repository 까지 전달하시는 것을 보고 DTO가 영속 계층까지 가는것에 문제가 없는가 궁금하여 질문드립니다.추가로 AEntity의 Repository에서 BEntity를 파라미터로 받아도 설계상?으로 괜찮은지도 궁금합니다.class MemberRepository{ //파라미터로 DTO 받기 List<Member> findMember(MemberDto memberDto){ ... } //파라미터로 다른 Entity 받기 Member doSomething(Team team){ ... } }
- 미해결실전! Querydsl
강사님 "프로젝션과 결과 반환 - DTO 조회" 질문 있습니다.
안녕하세요. 강사님. "프로젝션과 결과 반환 - DTO 조회" 강의에서 궁금한 게 생겼습니다.querydsl는 클래스 안에 있는 클래스를 처리할 수 있는 방법이 있나요?예를 들어서 아래 두 개의 클래스가 있으면 Member.class 형태로 값을 가져올 수 있는 방법이 있나요?감사합니다. class Member { private Team team; private String username;} class Team { private String teamname; private int count;}
- 해결됨실전! Querydsl
7강 마지막 Querydsl4RepositorySupport 질문 있습니다
[질문 내용]여기에 질문 내용을 남겨주세요. Querydsl4RepositorySupportabstract 으로 구현 하셨는데 이클래스를 public interface MemberRepository extends JpaRepository<Member, Long>, MemberRepositoryCustom { 이렇게 memberRepository 하나로 쓸순 없나요 ? @Repository public class MemberTestRepository extends Querydsl4RepositorySupport { 별개로 움직여서 사용 해야하나요 ??
- 미해결실전! Querydsl
Querydsl Where문에서 .and .or 질문입니다
.where(post.category.eq(categoryReceived) .and(post.title.contains(searchReceived)) .or(post.content.contains(searchReceived)) )지금 구현한 코드 일부 입니다.제가 원하는것은where 문 안에category.eq(~).and(title.contains(~)) 이거나category.eq.and(content.contains(~)) 일때db에서 긁어 오는것을 구현 하고 싶습니다. 그런데, 막상 해보니 or 안에 들어있는 조건만 충족해도 긁어오더라구요.질문 1. 이러한 경우에 코드를 어떻게 작성하면 효율적으로 구현이 될까요?..where문 안에 ,(콤마)가 and 조건이라고 하는데 콤마 말고 or 조건을 나타내는 기호가 있을까요?
- 미해결실전! Querydsl
where 절에서 alias를 사용하려면 어떻게 해야할까요?
List<UserDto> fetch = queryFactory .select(Projections.bean(UserDto.class, member.username.as("name), ExpressionUtils.as( JPAExpressions .select(item.itemCnt.max()) .from(item), "itemCount")) ).from(member) .fetch();위의 샘플과 같이 member 테이블 안에서 item의 서브쿼리를 사용합니다.위와같이 작성해서 실행을 하는데는 아무런 문제가 없습니다.그런데 문제가 되는 부분이where절에서 서브쿼리로 작성된 itemCount의 범위를 검색을 하려고 하는데 어떤식으로 처리를 해야할지 난감합니다. 이리저리 검색을 해서 아래와 같은 방법으로 비슷하게 구현을 한 방법이 있기는 한데Path<Long> itemCountAlias = Expressions.numberPath(Long.class, "itemCount");적용을 해 봐도 적용이 안됩니다.ㅠㅠ오류가 itemCnt 이름의 칼럼이 없습니다.라는 오류만 뿌려줍니다.private BooleanExpression whereByItemCond(SearchOption searchOption, Path<Long> aliasQuantity) { String cnt = searchOption.getSearchCount(); if(searchOption.getSearchType().equals("itemCount")){ return aliasQuantity != null ? aliasQuantity.eq(String.valueOf(cnt)) : null; } } 서브쿼리에 추가한 Alias를 조건 검색문에서 검색할려면 어떤식으로 처리를 해야할까요? 혹시 제가 접근 방법을 잘못 알고 있다면 어떤식으로 처리를 해야할까요?결론적으로 구현하고 싶은 것은A, B 테이블이 있는데 A테이블에서 서브쿼리로 B테이블의 특정 값을 추가해서 목록으로 뿌려주고 있는데검색 조건을 A테이블에서가 아닌 B테이블에 있는 값(A+B테이블의 조합으로 만들어진 목록 데이터값)을 필터링해서 검색을 하려고 합니다. 제목 | 작성자 | 아이탬 수---------------------첫째 홍길동 4둘째 김길동 5셋째 박길동 2이런식으로 목록을 보여주는 화면이 있는데 제목과 작성자는 member테이블에서, 아이템수는 item 테이블에서 가져왔습니다.쿼리는 위에서 적은것과 같이 기본 member테이블에서 item테이블을 서브쿼리를 사용해서 값을 추가했습니다. ExPressionUtils.as(JPAExpression.select~~)여기서 기본검색(?)조건인 제목, 작성자 검색은 문제가 없는데, 서브쿼리로 추가했던 아이템 수로 검색을 하려고 합니다.B테이블은 A테이블을 ManyToOne으로 설정이 되어 있습니다.
- 미해결실전! Querydsl
엔티티 클래스 생성 시 생성자 및 Setter 생성과 관련해 질문 드립니다.
해당 강의를 이제 막 시작하고 있는 학생입니다. queryDSL 환경 세팅을 하다가 엔티티 클래스에 궁금한 점이 생겨서요. 보통 질의에 대한 결과 데이터에 대해 수정이 불가능하도록 불변 객체로 만든다고 하잖아요.그 때문에 JPA에서 사용하는 엔티티 객체 또한 생성자를 public으로 만들지 않고 Setter의 사용도 피한다고 알고 있습니다.그런데 위 방법이 JPA로 질의를 해올 때는 문제가 되지 않지만 ( 즉, select할 경우 ) 직접 제가 객체를 만들어서 ( new 생성자 사용 ) insert를 하거나, select한 객체에 필드 값을 수정해서 ( setter 사용 ) update를 하는 경우에는 public 생성자도 setter도 모두 필요한 것 아닌가요?.. 혹은 제가 잘못된 정보를 알고 있는 것일까요??select 시 대안으로 해당 결과를 final로 하여 받으면 불변 객체가 되어 조회 이후 데이터 수정을 막을 수 있다고 생각했지만 public 생성자 사용 여부와 setter 사용 여부에 대한 적절한 상황 파악이 어려워 질문 드립니다!
- 해결됨실전! Querydsl
안녕하세요. 실전 모든 강의 수강했습니다.
[질문 내용]안녕하십니까.김영한 강사님의 모든 실전 강의를 다 들었습니다. JPA 관련 고퀄리티의 강의 정말 감사합니다.저희 회사에서 이번 프로젝트에 JPA를 적극 도입하고자 하는데 기존 수업을 들었던 환경과 조금 달라 이렇게 문의를 하고자 합니다.저희 회사에서 여러 DB (최소 4개 이상)를 한 스프링 백엔드에서 다뤄야하는 상황이 되었습니다. 이 상황에 JPA로 DB를 각각 연결하여 사용하는 것이 가능할까요? 또한 성능적으로도 문제가 없을 지 궁금합니다.
- 미해결실전! Querydsl
Deprecated
querydsl 5.0 버전부터 fetchResult() , fetchCount()가 Deprecated 되서 공식문서에서는 이 두 메서드 대신에 fetch.size를 권장 한다고 합니다 https://devwithpug.github.io/java/querydsl-with-datajpa/참고 하실분 참고하세용
- 해결됨실전! Querydsl
무한 반복 call next value for hibernate_sequence
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요. 선생님. 스프링때부터 JPA까지 선생님 강의가 매우 퀄리티가 높아 잘 보고 있습니다.강의 중간중간에 따라쳐도 안되는 부분들은 전부 구글링으로 해결을 했었는데 이번건은 좀 난해하네요.실전! Querydsl의 실무 활용 - 순수 JPA와 Querydsl 섹션 중 마지막 강의인 조회 API 컨트롤러 개발 강의를 듣다가 따라서 application을 run했는데, 무한히이런 코드들이 반복되어 나옵니다.구글링으로도 검색이 안되는 것 같아서 질문 남깁니다^^;혹시 몰라 제 코드도 같이 올립니다.https://drive.google.com/file/d/1dvt8k4-BPhsH2MDWXFyAChGU17-AEpLv/view?usp=share_link늘 건강하세요.
- 해결됨실전! Querydsl
count 쿼리 최적화 질문 드립니다.
안녕하세요! 영한님^^개발자들을 위해여 양질의 강의를 제공해주셔서 정말로 감사의 말씀을 드립니다.🙏 질문드리겠습니다. 먼저 제가 이해한 내용을 말씀드리겠습니다.PageableExecutionUtils를 사용하면 count 쿼리 최적화하 가능 하다고 말씀하셨습니다.그 이유는 람다를 사용하여 게으른 호출로 인하여 실제 사용되기 전까지는 함수가 실행되지 않는다고 이해했습니다. 다음 2가지 경우에 count 쿼리가 실행되지 않다고 말씀하셨습니다.페이지 시작이면서 컨텐츠 사이즈가 페이지 사이즈 보다 작을때페이지 시작(0)이면서 컨텐츠 사이즈(3)가 페이지 사이즈(10)보다 작다면 컨텐츠 사이즈(3)가 카운트 갯수 마지막 페이지 일때(offset + 컨텐츠 사이즈 = 카운트)예를 들어 전체 데이터는 103개이고, 페이지 사이즈는 10이라고 한다면마지막 페이지 일때는 offset(100), 컨텐츠 사이즈(3)이라서 카운트는 103으로 이해 하고 있는데 맞는 내용 인가요? 감사합니다.^^
- 미해결실전! Querydsl
order by case 문
안녕하세요.아래와 같은 상황에서 case when 을 order by에 사용할 수 있을까요?해보려고 했는데 빨간줄이 뜨네요 ㅠ 출처 : https://hashcode.co.kr/questions/3480/%EB%8C%80%EB%8C%93%EA%B8%80-db-%EC%8A%A4%ED%82%A4%EB%A7%88-%EC%84%A4%EA%B3%84
- 미해결실전! Querydsl
Tuple안에 QResponseDto로 만든 값이 get이 안됩니다
QueryDsl을 쓰다보면 반환타입이 List<Tuple>이 나오는 경우가 있습니다.이 경우에, 일반적인 값들은 .get(0).get(Type)을 쓰면 읽어 와지는데, @QueryProjection을 붙인 dto는 빨간줄이 뜨네요.아래와 같이 4가지 시도를 했는데 전부 빨간줄이 떠서 어떻게 해결방법이 있을까 하고 질문글 올려봅니다
- 미해결실전! Querydsl
기존 project에 Querydsl 적용 문제입니다
기존에 작성하던 코드에 querydsl을 붙였는데 문제가 뜨네요..빈 프로젝트 test코드에선 잘 작동하였는데UnsatisfiedDependencyException이 계속 뜨네요.. jparepository에 extend 하는 순간에 에러가 뜹니다.커스텀 파일 (PostRepositoryCustom,PostRepositoryImpl)두 클래스만 연결하고 run을 돌렸을땐 에러가 안뜹니다.그런데, jpa repository을 상속받은 PostRepository에 extend로 PostRepositoryCustom을 연결해주는 순간 저렇게 에러가 뜨네요...구글링해봐도 이유를 모르겠습니다 제발 도와주세요org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'likeController' defined in file [E:\dev\spring\week6\final\build\classes\java\main\com\example\soldapple\like\controller\LikeController.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'likeService' defined in file [E:\dev\spring\week6\final\build\classes\java\main\com\example\soldapple\like\service\LikeService.class]: Unsatisfied dependency expressed through constructor parameter 1; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'postRepository' defined in com.example.soldapple.post.repository.PostRepository defined in @EnableJpaRepositories declared on JpaRepositoriesRegistrar.EnableJpaRepositoriesConfiguration: Invocation of init method failed; nested exception is org.springframework.data.repository.query.QueryCreationException: Could not create query for public abstract java.util.List com.example.soldapple.quarydsl.PostRepositoryCustom.findAllMyTest(); Reason: Failed to create query for method public abstract java.util.List com.example.soldapple.quarydsl.PostRepositoryCustom.findAllMyTest()! No property 'findAllMyTest' found for type 'Post'; nested exception is java.lang.IllegalArgumentException: Failed to create query for method public abstract java.util.List com.example.soldapple.quarydsl.PostRepositoryCustom.findAllMyTest()! No property 'findAllMyTest' found for type 'Post'