30%
61,600원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결실전! Querydsl
querydsl dto mapping & subquery 질문 남깁니다.
안녕하세요 열심히 수업듣고 따라하고있는 수강생입니다. 먼저 매번 답변주셔서 감사합니다. 질문으로는 dto mapping 에서 @queryprojection 으로 직접 조회를 해야하는 상황입니다. 글 : 채팅방 1 : N채팅방 : 채팅 1: N 일때 DTO 는 @Data public class QChatRoomDto { private QaType qaApart; private String qaContent; private String searchPlace; private String category; private Long chooseMemberIdx; // 채택 / 미채택 기준 private Long roomIdx; private Long otherMemberIdx; private String otherMemberNickname; private String otherMemberImgDto; private int qaCount; private String modifiedDate; private String recentlyMsg; private String recentlyMsgType; private Long notReadCount; @QueryProjection public QChatRoomDto(String qaContent, String searchPlace, String category, Long chooseMemberIdx, Long roomIdx, Long otherMemberIdx, String otherMemberNickname, String otherMemberImgDto, int qaCount, LocalDateTime modifiedDate, String recentlyMsg, String recentlyMsgType, Long notReadCount) { this.qaApart = QUESTION; this.qaContent = qaContent; this.searchPlace = searchPlace; this.category = category; this.chooseMemberIdx = chooseMemberIdx; this.roomIdx = roomIdx; this.otherMemberIdx = otherMemberIdx; this.otherMemberNickname = otherMemberNickname; this.otherMemberImgDto = otherMemberImgDto; this.qaCount = qaCount; this.modifiedDate = modifiedDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); this.recentlyMsg = recentlyMsg; this.recentlyMsgType = recentlyMsgType; this.notReadCount = notReadCount; } } querydsl public Page<QChatRoomDto> myQuestionChatRoomList(Member questionMember, List<Member> blockMembers, QaStatusType qaStatusType, Pageable pageable) { return applyPagination(pageable, contentQuery -> contentQuery .selectDistinct(new QQChatRoomDto( qa.content.as("qaContent"), qa.searchPlace.as("searchPlace"), qa.category.name.as("category"), qa.selectMember.idx.as("chooseMemberIdx"), chatRoom.idx.as("roomIdx"), chatRoom.aMember.idx.as("otherMemberIdx"), chatRoom.aMember.nickname.as("otherMemberNickname"), chatRoom.aMember.memberImg.as("otherMemberImgDto"), chatRoom.qMember.qaList.size().as("qaCount"), chatRoom.modifiedDate.as("modifiedDate"), ExpressionUtils.as( JPAExpressions.select(chat.content) .from(chat) .where(chat.chatRoom.eq(chatRoom), chat.idx.eq( JPAExpressions.select(chat.idx.max()) .from(chat)) ), "recentlyMsg") , ExpressionUtils.as( JPAExpressions.select(chat.chatType) .from(chat) .where(chat.chatRoom.eq(chatRoom), chat.idx.eq( JPAExpressions.select(chat.idx.max()) .from(chat)) ), "recentlyMsgType"), ExpressionUtils.as( JPAExpressions.select(chat.count()) .from(chat) .where(chat.chatRoom.eq(chatRoom), chat.member.ne(questionMember), chat.readMsg.isFalse()), "notReadCount") ) ) .from(chatRoom) .join(chatRoom.qa, qa) .join(chatRoom.aMember, member) .where(chatRoom.qMember.eq(questionMember), isQaSelectMember(questionMember, qaStatusType), blockAMembersNotIn(blockMembers), chatRoom.idx.notIn( JPAExpressions.select(chatRoom.idx) .from(chatRoom) .where(chatRoom.isLeave.contains("_" + questionMember.getIdx() + "_"))), member.phoneNum.isNotNull() ) .orderBy(chatRoom.modifiedDate.desc())); }이렇게 작업을 했습니다. 매우 이상한 쿼리이겠지만 저한텐 이게 최선이었습니다 ㅠ여기서 궁금한점은 채팅룸 리스트를 뽑아야 하는데 recentlyMsg, recentlyMsgType채팅 리스트의 최근 데이터를 가지고 오고싶었으나 subQuery에서 limit 1 이 먹히지 않아 저런 괴랄한? 쿼리를 만들어 작동은 되게 만들었습니다. 해서 dto mapping 할때 컬렉션 리스트를 뽑는 다른 방법이 있는지 궁금합니다. chatRoom.chatlist 를 반환하여 queryprojection에서 가공하려 했지만 에러가 뜨면서 chatList는 반환이 안되어 질문글 남깁니다. 감사합니다.
- 미해결실전! Querydsl
count query 질문입니다
[질문 내용]아래처럼 List<MemberTeamDto> 를 쿼리해올때, 최적화를 위해 count query 를 따로 작성하셨는데, 왜 result.size() 로 바로 total count 값을 가져오면 안되는건지 궁금합니다! 이유가 무엇인가요?List<MemberTeamDto> result = queryFactory .select(new QMemberTeamDto( member.id.as("memberId"), member.username, member.age, team.id.as("teamId"), team.name.as("teamName"))) .from(member) .leftJoin(member.team, team) .where( usernameEq(condition.getUsername()), teamNameEq(condition.getTeamName()), ageGoe(condition.getAgeGoe()), ageLoe(condition.getAgeLoe()) ) .offset(pageable.getOffset()) .limit(pageable.getPageSize()) .fetch();
- 미해결실전! Querydsl
em.flush(),clear() 대신 @Modifying 어노테이션을 붙여도 되나요?
1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]@Modifying 을 어노테이션으로 단다면, em.flush(),clear() 코드없이 동일한 동작을 수행하게 되나요?스프링 데이터 JPA에서는 Repository위에 달았는데요. 뒷 강의에서 Spring data JPA와 QueryDSL을 병행해서 사용하기 위해 custom Repository를 만든다고 배웠습니다. 이 custom Repository의 함수에 @Modifying을 달아도 동일하게 동작하는지 궁금합니다. 정리하자면 QueryDSL에서도 @Modifying이 적용되는지 궁금합니다.
- 미해결실전! Querydsl
정적쿼리와 동적쿼리의 개념의 차이점이 궁금합니다.
Querydsl 기술은 복잡한 쿼리를 작성할 때나 동적쿼리를 쉽게 작성할 때 큰 강점을 가진 것으로 알고 있습니다. 그런데 정적쿼리와 동적쿼리의 개념에 대한 차이점이 잘 와 닿지가 않아 질문을 드립니다.정적쿼리에 파라미터를 주고 파라미터에 따라 쿼리를 한 결과가 달라지는 것은 왜 정적쿼리인 것인지 조금 혼란스러워서요.정적쿼리와 동적쿼리를 확실히 구분하는 기준(?) 같은 것이 있는지 궁금합니다. 여기서부터는 제 생각입니다!혹시 정적쿼리에 파라미터를 넣어서 조회하는 것은 파라미터를 넣지 않으면 아예 SQL이 실행이 되지 않는 반면에 동적쿼리를 수업에서 예시를 들어서 설명하신 것처럼 이름은 들어가고 나이는 들어가지 않아도 쿼리가 실행은 되는 그런 차이일까요?
- 미해결실전! Querydsl
DTO를 바로 조회와 관련하여 질문이 있습니다.
QueryDsl을 사용하여 DTO를 바로 조회하는 것이 정말 쉽다는 것을 배우고 충격을 받은 사람입니다 'ㅅ'보통 컨트롤러에서 엔티티를 바로 리턴해주지 않기 위하여 엔티티를 조회하고 DTO로 다시 변환해주는 과정을 거치는데요. QueryDsl을 사용해서 바로 DTO를 조회하면 이런 과정 자체가 필요가 없어지는건가요?
- 미해결실전! Querydsl
DTO 안에 DTO
안녕하세요.추가로 개인적으로 공부를 하다가 궁금한 점이 생겨서 질문드립니다!Projections 사용 시에 DTO 의 생성자 방식으로 사용하였는데,혹시 DTO 안에 DTO 를 사용하는 방식은 가능할까요?? 이런 방식으로도 사용이 가능한 지 궁금해서 질문을 남겨봅니다! 감사합니다!
- 미해결실전! Querydsl
실무에서 Entity간 객체 탐색을 사용하는 경우가... 있을까요?
안녕하세요. 먼저 질 좋은 강의 덕분에 새로운 기술을 배우고 서비스에 적용 시키며 보람을 느끼고 있습니다. 감사합니다.다름이 아니라 현재 Spring JPA +QueryDSL 로 개발을 하던 도중 소스를 다시 훑어 보니 문득 의아한 생각이 들었습니다.제가 개발 해 놓은 소스를 보다 보니 Query 시 객체 탐색을 통한 구현이 거의 이루지지 않았더군요. 그래서 왜 이렇게 개발을 했나 하고 생각 해보니각 client(ex:브라우저) 의 요구사항에 맞는 데이터를 각 Entity에서 조회를 해야하나 사용하지 않은 모든 컬럼의 데이터를 조회 하는 것에 대해서는 비효율적일 수 있다. (테이블 내 컬럼이 많아질수록... 컬럼 내 타입 사이즈가 커질수록...)이에 Entity를 자체를 조회가 아닌 QueryDSL의 on 절 및 Projection을 통해 성능 향상을 이룰 수 있다.그러다 보니 기능 동작 관점에선 각 Entity간 연관관계를 통해 탐색을 거의 하지 않게 된다.결국 이런 결론에 도달하게 되었는데요. 이러다 보니 초기 강의를 들으면서 적용 했던 소스와는 달리 현재는 대부분 객체간의 연관관계를 설정하더라도 객체 탐색을 쓰지 않게 되고 있습니다.그 외에도 개인적인 생각이지만 객체 탐색을 통해 실무에서 주니어분들이 의도치 않은 성능 저하를 (n : 1 등) 일으킬 수 있어서 지양하는 대신, 정말 작은 규모의 테이블 하나만 조회 할 때 빼고는 사용을 안하는 방향으로 개발을 진행하고 있는데 이게 jpa의 기능을 절반 떼어버리는 듯한 느낌이 들어서 잘 이해한건지 불안불안 합니다.그래서 혹시 실무에서는 객체 탐색을 하는 경우가 있으신지 있다면 어느 케이스일 때 사용하는지 궁금합니다.그리고 객체 탐색 시 필요한 컬럼만 조회 하는 기능이... 있을까요?? 있다면 이런 질문을 드리지 않았을 거 같긴한데... 찾아 봐도 잘 안나오더군요ㅠ
- 미해결실전! Querydsl
결과값 DTO 반환
안녕하세요! 제가 따로 연습하면서 궁금한점이 생겨서 질문 드립니다!Projections 를 사용해서 DTO 반환시 강의에서는 필드값 하나하나이지만 연관관계 테이블 예를들어 Member-Team인 경우(양방향)멤버 ->팀 방향 멤버 조회시 DTO 에 팀은 잘 들어오는데 (양방향) 팀->멤버 조회시 DTO 필드값을 List<Member> 둬야 될것같아서(?) 했는데 잘안돼네요.. 방법을 잘 모르겠는데 혹시 이럴때는 어떤 방법을 써야할까요..?
- 미해결실전! Querydsl
OnToMany 관계의 복잡한 동적쿼리는 어떻게 해결하나요?
@Override public Page<?> findAllPostWithCategory3(Pageable pageable, List<Tech> techList, Category category, Place place) { JPAQuery<PostResponseDto> query = queryFactory. select(new QPostResponseDto(post)) .from(post) .leftJoin(post.account, account).fetchJoin() .where(checkCategory(category), checkPlace(place)) .leftJoin(post.techs, techs) .where(checkTechList(techList)) .offset(pageable.getOffset()) .limit(pageable.getPageSize()); // sorting for (Sort.Order o : pageable.getSort()) { PathBuilder pathBuilder = new PathBuilder(post.getType(), post.getMetadata()); query.orderBy(new OrderSpecifier(o.isAscending() ? Order.ASC : Order.DESC, pathBuilder.get(o.getProperty()))); } List<PostResponseDto> list = query.fetch(); JPAQuery<Long> countQuery = queryFactory .select(post.count()) .from(post) .where(checkTechList(techList)); return PageableExecutionUtils.getPage(list, pageable, countQuery::fetchOne); }//동적 관리 /*techList in query where*/ private BooleanExpression checkTechList (List < Tech > techList) { return techList == null ? null : techs.tech.in(techList); } /*category in query where*/ private BooleanExpression checkCategory (Category category){ return category == null ? null : post.category.eq(category); } /*place in query where*/ private BooleanExpression checkPlace (Place place){ return place == null ? null : post.place.eq(place); } Post를 기준으로 account는 manyToOne이고지금 문제가 되는것은 Tech입니다. Post와 oneToMany관계인데, 동적쿼리를 tech의 값으로 해야되서 문제가 발생합니다..페이지네이션을 유지해야하기에, 어떻게 짜야할지 모르겠습니다. 제발 도움이나 힌트 부탁드립니다
- 미해결실전! 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 조건을 나타내는 기호가 있을까요?