실전! Querydsl

실전! Querydsl

(43개의 수강평)

688명의 수강생
Back-EndJavaJPASpring Data JPAJQuery
월29,333원
88,000원
3개월 할부시
지식공유자 · 김영한
41회 수업· 총 6시간 24분수업
평생 무제한 시청
수료증 발급 강의
수강 난이도 중급이상
kangsy763 프로필

condition 만들어지는 과정 kangsy763 23시간 전
안녕하세요 ! 마지막 테스트 부분에서 postman 에서 ? 를 덧붙여서 입력하는 부분에서 질문이 있습니다. MemberController에서 /v1/members 후에 따로 pathvariable을 이용해주지 않았는데 자동으로 MemberSearchCondition안에 어떻게 들어가게 되는지 궁금합니다. 지난 공부하고 텀이 좀 있어서 제가 까먹은 부분이 있는걸까요.. 이 부분이 궁금합니다!

0
kangsy763 프로필

member.username.eq kangsy763 4일 전
안녕하세요~ 질문이 있습니다. member.username.eq( n ) 이라는게member.username 이 n 과 같다라는게builder 내부에 member.username 필드를 생성하고 그것을 n 으로 초기화 한다는 뜻인가요 ? ?

2
핑카미나 프로필

계층형 쿼리 관련하여 질문드립니다. 핑카미나 10일 전
영한님 안녕하세요.  올려주신 강의들 보면서 심심할때마다 회사 레거시 디비를 포팅해보고 있는데요 왠만한건 정말 다되는거 같은데 재귀쿼리 부분이 떠오르지가 않아서 문의드립니다 ㅠㅠ 비슷한 예시로는 폴더 (폴더_id, 부모폴더_id) 트리 구조인데 폴더와 하위 폴더를 전부 조회하고, 폴더 별로 경로를 구한다라고 가정하면 querydsl 형태로 작성할수 있을까요? 디비가 다양하게 운영되는 터라 with recursive가 지원이 되면 수월할거 같은데 지원이 안된다면 네이티브 쿼리로 가야할까요?  셀프 연관관계는 아무래도 뎁스가 깊어지면 조인이 여러번 일어나 비효율적인거 같기도 해서 고민입니다.

1
techsupport2 프로필

QDSL로 복잡한 쿼리를 어느정도 커버 가능한가요? techsupport2 11일 전
안녕하세요~ 좋은 강의 감사합니다. SPRING DATA JPA 강좌 부터 듣고 있는데 JPA의 장점은 명확하게 알 것 같습니다. 간단하거나 조회조건이 단순할 경우에는 보다 쉽고 강력하게 느껴지는데요. 쿼리가 복잡할 경우 QDSL을 적극 권유 하시는데 QDSL이 커버 가능한 범위가 어디까지일까요? 일단 말로만 접했을 경우에는 기존에 정의한 ENTITY 클래스로 무언가 프로그래밍 방식으로 처리 한다고 생각했는데 별도의 컴파일 과정이 중간에 들어가는것 같습니다. 그리고 그 컴파일후 결과가 앞에 Q라는 접두어가 붙는데 약간의 혼란스러움이 느껴지네요. 그래서 그런지 실제 통계 또는 여러 테이블을 조인 하거나 조건처리가 많은 동적 쿼리같은 경우에는 오히려 MYBATIS처럼 네이티브쿼리 사용하는것이 결과에 대한 확인과 빠른 대응이 이루어 질 것 같은데요. 그부분에 대해서는 어떠한 생각인지 의견을 듣고 싶습니다. 개인적으로는 JAVA와 QUERY는 성격이 다르기 때문에 분리해야 한다는 생각이 강한 개발자인데요.  그래도 JPA의 장점을 알기에 학습을 하고 있는데 학습 하면 할수록 무언가를 결정하기가 어렵네요 ㅎㅎ. 현재 MYBATIS냐 JPA냐 결정해야 하는 상황이라서 질문드려 보았습니다.

1
kepha 프로필

@OneToMany 인 collection 멤버 필드까지 Projection 가능한지요? kepha 12일 전
QueryDsl 에서 Projection 기능이 깔끔하고 막강한데요. @OneToMany 인 collection 멤버를 가지고 있는 DTO 로 Projection 을 한번에 가능한지요?   Team.members   TeamDto.memberDtos Lazy 로 @OneToMany Join 시에.. querydsl 쿼리에서 바로 위와 같이 collection 멤버필드까지 한번에 Projection 이 가능한지요? 아니면 일단 entity 로 읽어서 map() 함수를 이용해서 매핑해 주어야 하는지 궁금합니다.

1
kepha 프로필

Querydsl 로 Fetch Join 시 페이징 처리 이슈 kepha 14일 전
Querydsl4RepositorySupport적용해서 Paging 과 Sort 도 잘 적용되는데요fetch join 하면 Paging( limit ?,? ) 부분 쿼리가로그에 안찍히더라구요. fetch join 시에는페이징 처리 안되는게 맞는건가요?

1
kepha 프로필

MemeberRepositoryImpl(em: Entitymanger) 구현자로 em 아규먼트는 어떻게 전달되는 지요? kepha 20일 전
public interface MemberRepository extends JpaRepository<Member, Long>, MemberRepositoryCustom { List<Member> findByUsername(String username); } MemeberRepositoryImpl(em: Entitymanger) 구현자로 em 아규먼트는 어떻게 전달되는 지요? 자동으로 아규먼트가 Autowired 되는 것인지요???

2
bk11001 프로필

Querydsl 에서 enum 상태 명을 조인할 수 있을까요? bk11001 20일 전
코드 테이블을 사용하지 않고 enum을 활용하고 있었습니다. post entity에 다음과 같이 사용중 입니다. @Column(length = 30,nullable = false)@Enumerated(EnumType.STRING)private PostStatus status; PostStatus enum RECEIPT("접수대기",1),EXAMINATION("접수",2),IN_PROGRESS("진행",3),COMPLETED("완료",4),;private String title;private int seq; 이런식으로 되어있는데요. Querydsl에서 저 post.status로 code는 당연히 뽑아지지만 저 title을 가져오지를 못하더군요. join? converter? 검색을 해봐도 마땅히 방법을 모르겠어서 문의 드립니다. 간단하게 게시판 내 status 별 counting을 하는 query였습니다. List<Tuple> QueryResult = jpaQueryFactory .select(post.status, post.count()) .from(post) .where( eqAdminUserCompanyTypeMap(usergroup) ) .groupBy(post.status) .fetch();Map<String, Long> returnMap = new HashMap<>();for (Tuple tuple : QueryResult) { returnMap.put(tuple.get(0,String.class), tuple.get(1,Long.class));} 바쁘시겠지만 답변주시면 큰 도움될것같습니다.

1
LUA 프로필

Querydsl과 jpql을 선택하는 차이가 궁금합니다. LUA 25일 전
드디어 querydsl을 배우고있네요! 제가 이해하고 있기로는, jpa에서 단순히 PK값으로 find()만 하는것이 아니기 때문에 여러가지 조건으로 검색하는 쿼리를 위해 jpql이 존재하는 것이고, jpql로 해결하기 어려운 동적쿼리나 더욱 복잡한 쿼리를 해결하기 위해 querydsl이 필요하다고 이해하고 있습니다. 그런데 실무에서 개발을 할 때 스프링 data jpa가 제공하는 기능이외에 필요한 내용들은 모두 querydsl로 작성하면 되지않나요?? querydsl 이외에 jpql을 작성해야하는 경우가 존재하는 것인지 아니면 querydsl과 jpql의 차이를 더욱 이해하기 쉽게하기위해 두가지 상황을 모두 보여주는 것인데 제가 착가하는 것인지 궁금합니다. 01. 실무에서 querydsl과 jpql을 같이 사용하나요?? 02. jpql을 함께 사용 한다면, 같이 사용해야하는 이유는 무엇인가요?? (querydsl을 사용하면 jpql로 만들수 있는 모든 쿼리를 다 만들수 있지않나 생각됩니다.)

1
Junyoung_Choi 프로필

실제 서비스에 적용해보다 보니 고민이 생겨서 질문드립니다! Junyoung_Choi 26일 전
현재 QueryDSL 강의를 듣고 실제 서비스에 적용하기 위해 사용자가 군 내 전문특기 보직에 대한 평가를 매기는 사이트를 개발 중에 있습니다. 문제는 병과 조회 페이지를 호출할 때마다 병과의 평균 점수를 어떻게 구하냐인데, 현재 설계에서는 데이터 정합성을 위해 병과 테이블에 따로 점수 데이터를 저장하지 않고, 병과 조회 시 해당 병과에 속하는 모든 평가들을 Join한 뒤, DB가 아닌 서버 단에서 점수 평균을 구하는 방식으로 구현했습니다. (Gist) 처음에는 DB 단에서 평균을 처리하는 것이 좋을 것 같아 QueryDSL에서 fetch join을 사용해 각 evaluation.radarChart.속성들 에 avg() 함수를 사용했는데, 그 결과가 Branch의 RadarChart에 적절히 매핑이 되지 않았습니다. 이런 상황에 어떤 방식으로 기능을 구현해야 할 지 QueryDSL이 익숙치 않아 감이 잘 오지 않습니다. @RequiredArgsConstructor @Repository public class BranchQueryRepository { private final JPAQueryFactory queryFactory; public Branch findById(Long id){ return (Branch) queryFactory.select(branch.id, branch.name, branch.createdDate, branch.modifiedDate, evaluation.score.careerRelevance.avg(), evaluation.score.workLifeBalance.avg(), evaluation.score.unitVibe.avg(), evaluation.score.trainingIntensity.avg(), evaluation.score.officer.avg()) .from(branch) .leftJoin(branch.evaluations, evaluation).fetchJoin() .where(branch.id.eq(id)) .fetchOne(); } }

1
jihyeon.jang 프로필

강의 듣고 실무 적용하다가 궁금한 사항이 있어서 문의 드립니다. jihyeon.jang 28일 전
안녕하세요. 강의 잘 듣고 있습니다. 궁금한 사항이 있어서 문의 드립니다. 1. 테스트 케이스 작성 시  service layer 테스트 시에는 @Transactional 어노테이션을 붙으면 rollback 되는 것을 확인하였는데controller 테스트 할 때도 결과값을 DB에 반영되지 않게 할 수 있는 방법이 있나요? 이경우는 DELETE 메서드를 호출해서 수동으로 초기화해주는 방법만 있나요? 2. 트랜잭션 관리 - 1.DB에 저장 시 에러가 발생되면 exception이 발생되어 2.external api 호출이 안되게는 할수 있을것 같은데 - 1.DB에 저장은 성공해서 데이터베이스에 값이 들어가 있는 상태에서 2. external api 호출 시 에러가 나면 1.DB에 이미 저장되어 있는 값을 다시 롤백할 수 있는 방법이 있나요? // 서비스 함수 public void test() {  // 1. DB에 저장  // 2. external api 호출 (이 경우 외부 서비스에서 1번에서 저장 된 값을 REST API를 호출해서 참조) }  3. exception 발생 위치 - save()함수 호출 후 "저장 성공"이라는 문구가 콘솔에 찍히면 해당 메서드는 Transaction이 종료되는 시점에 이슈가 없다고 봐도 될까요? 아니면 memberRepository.save() 함수 호출 시 발생되는 exception이 있고, Transaction이 종료되는 시점에 발생되는 exception도 존재하나요?  @Transactional public void save(Member member) {     memberRepository.save(member);     System.out.println("저장 성공"): } 너무 많은 질문을 한꺼번에 했는데.;;; 아시는 부분에 대해서 답변 주시면 감사하겠습니다. 수고하세요.

1
google_user 프로필

querydsl where 절 조건 관련 오류 문의드립니다. google_user 1달 전
안녕하세요.. 강의 잘 듣고 여러모로 아주 도움이 많이 되고 있습니다.  페이징 처리하는데 있어서 조건검색을 2개는 or 로. 1개는 and 조건으로 처리하고 싶은데  companyName, companyArea, Status  이렇게 3개의 조건을 받아서 처리하는데  null point exception 오류가 납니다.  where 절 이부분에서   .where( ( companyNameEq(keyword) .or(companyAreaEq(keyword)) ), statusEq(status) ) .or(companyAreaEq(keyworkd) 을 빼면 오류가 안납니다.  물론 그위에 companyNameEq를 빼도 안나고요..  먼가 조건 조합 할 때의 오류인듯한데 이리저리 해봐도 계속 오류가 나서  바쁘시지만 조언을 좀 구했으면 합니다 ^^  http://localhost/consultingList     <--- 오류 http://localhost/consultingList?keyword=a&status=접수      <-- 정상동작 소스코드  @Overridepublic Page<ConsultingListDTO> searchPageSimple(String keyword, String status, Pageable pageable) { System.out.println("keyword: " + keyword); System.out.println("status: " + status); QueryResults<ConsultingListDTO> results = queryFactory .select(new QConsultingListDTO(consulting.id, consulting.companyName, consulting.companyArea, consulting.companyPhone, consulting.companyEmail, consulting.consultingStatus, consulting.insertDate )) .from(consulting) .where( ( companyNameEq(keyword) .or(companyAreaEq(keyword)) ), statusEq(status) ) .offset(pageable.getOffset()) .limit(pageable.getPageSize()) .orderBy(consulting.insertDate.desc()) .fetchResults(); List<ConsultingListDTO> content = results.getResults(); long total = results.getTotal(); return new PageImpl<>(content, pageable, total);} private BooleanExpression companyNameEq(String companyName) { return hasText(companyName) ? consulting.companyName.like('%' + companyName +'%') : null;}private BooleanExpression companyAreaEq(String companyArea) { return hasText(companyArea) ? consulting.companyArea.like('%' + companyArea + '%') : null;}private BooleanExpression statusEq(String status) { return hasText(status) ? consulting.consultingStatus.eq(ConsultingStatus.valueOf(status)) : null;} ------ 에러코드 {"timestamp":"2020-06-14T08:19:24.029+0000","status":500,"error":"Internal Server Error","message":"No message available","trace":"java.lang.NullPointerException\n\tat com.dyway.fund.consulting.ConsultingRepositoryExtendImpl.searchPageSimple(ConsultingRepositoryExtendImpl.java:47)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:566)\n\tat org.springframework.data.repository.core.support.RepositoryComposition$RepositoryFragments.invoke(RepositoryComposition.java:371)\n\tat org.springframework.data.repository.core.support.RepositoryComposition.invoke(RepositoryComposition.java:204)\n\tat org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor.invoke(RepositoryFactorySupport.java:657)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n\tat org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:621)\n\tat org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:605)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n\tat org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:80)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n\tat org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:366)\n\tat org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:99)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n\tat org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n\tat org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:178)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n\tat org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:95)\n\tat org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)\n\tat org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)\n\tat com.sun.proxy.$Proxy106.searchPageSimple(Unknown Source)\n\tat com.dyway.fund.consulting.ConsultingController.consultingList(ConsultingController.java:183)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n\tat java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\n\tat java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n\tat java.base/java.lang.reflect.Method.invoke(Method.java:566)\n\tat org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)\n\tat org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)\n\tat org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:879)\n\tat org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793)\n\tat org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)\n\tat org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)\n\tat org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)\n\tat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)\n\tat org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:634)\n\tat org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:741)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\n\tat org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320)\n\tat org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:126)\n\tat org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:90)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\n\tat org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:118)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\n\tat org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\n\tat org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\n\tat org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:150)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\n\tat org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:158)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\n\tat org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\n\tat org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\n\tat org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\n\tat org.springframework.security.web.csrf.CsrfFilter.doFilterInternal(CsrfFilter.java:117)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\n\tat org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:92)\n\tat org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:77)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\n\tat org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\n\tat org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n\tat org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)\n\tat org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215)\n\tat org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178)\n\tat org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)\n\tat org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\n\tat org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\n\tat org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\n\tat org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)\n\tat org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)\n\tat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)\n\tat org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)\n\tat org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)\n\tat org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)\n\tat org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)\n\tat org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)\n\tat org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)\n\tat org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)\n\tat org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)\n\tat org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:367)\n\tat org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)\n\tat org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)\n\tat org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1639)\n\tat org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)\n\tat java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)\n\tat org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)\n\tat java.base/java.lang.Thread.run(Thread.java:834)\n","path":"/consultingList"}

3
@Todo 프로필

collection contain 관련 @Todo 1달 전
안녕하세요  query dsl 사용중 collection contain 관련 문의 드립니다.  entity의 collection attribute를 하나의 colume으로 관리하기 위해서 @Convert를 사용중인데  querydsl에서 해당 collection의 contain 으로 실행시 NPE가 발생합니다. @Type을 사용해도 동일하네요.  이를 해결하기 위한 방법이 있는가요 ? @Entitypublic class PrimitiveCollection { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Convert(converter = StringListConverter.class) private List<String> yourList;} @Converterpublic class StringListConverter implements AttributeConverter<List<String>, String> { private static final String SPLIT_CHAR = ";"; @Override public String convertToDatabaseColumn(List<String> stringList) { return String.join(SPLIT_CHAR, stringList); } @Override public List<String> convertToEntityAttribute(String string) { return Arrays.asList(string.split(SPLIT_CHAR)); }} List<PrimitiveCollection> bbb = queryFactory.selectFrom(QPrimitiveCollection.primitiveCollection) .where(QPrimitiveCollection.primitiveCollection.yourList.contains("bbb")) .fetch();

1
dev2 프로필

static import시 에러 dev2 1달 전
안녕하세요! QMember 를 static import 시 위와 같은 장애가 발생하여 문의드립니다. 왜그러는걸까요? ㅠㅠ 확인 부탁드립니다 감사합니다.

3
edutech-labs 프로필

application.yml 의 profiles 를 읽지 못함. edutech-labs 1달 전
application.yml <-- 이 파일의 active 값을 읽지 못하고 default 값으로 실행됨.

1
지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강의들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스