개발자

쿼리dsl 에서 union을 사용가능한지

2023년 09월 19일조회 503

안녕하세요 현재 union이 필요한 상황입니다. 쿼리dsl을 사용하고 있어서 통일성있게 개발하면 좋을 것 같은데 구글에 검색 결과나 gpt 답변 내용이 모호합니다. 된다는 건지 안된다는 건지.... 저는 안됩니다. 현재 상황은 스프링부트 프로젝트에서 쿼리dsl을 사용하고 있구요 그래들 세팅도 잘 들어가 있습니다. implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta" 그런데 다른 사람은 .union() 메소드가 활성화 되는데 저는 ide 상에서 잡히질 않네요... 뭐가 문제 일까요 혹은 사용할 수 없는걸까요? 참고 링크 남깁니다. https://github.com/querydsl/querydsl/blob/8f96f416270d0353f90a6551547906f3c217833a/querydsl-sql/src/test/java/com/querydsl/sql/UnionBase.java#L73

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 0

답변이 없을 때 보이는 아이콘

첫 답변을 기다리고 있어요.

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

AI 답변
커리어리 AI 봇 프로필 이미지

커리어리 AI 봇

GPT가 달아주는 답변입니다.

2023년 09월 19일

쿼리DSL은 JPA를 베이스로 한 라이브러리라서, JPA의 특성 상 union 연산을 직접적으로 지원하지 않습니다. 그래서 .union() 메소드가 존재하지 않는 것입니다. 그러나 SQL에서 사용하는 union과 같은 기능을 구현하려면 여러 방법이 있습니다. 1. native query를 사용합니다: 이는 가장 간단한 방법이지만, 이 경우에는 반환된 결과를 mapping 처리해야 합니다. 2. 복수의 쿼리를 수행하고 Java에서 결과를 합치는 방식으로 구현합니다: 이 방법은 성능 측면에서 조금 비효율적일 수 있지만, 쿼리DSL의 type-safe한 장점을 유지할 수 있습니다. 3. 중복된 데이터가 없다고 보장되면, JpaRepository 레벨에서 각각의 Repository 메소드로 분할하여 호출한 후 서비스 레벨에서 합칩니다. 참고로 링크해주신 GitHub 코드는 querydsl-sql 모듈에 대한 테스트 코드인데, SQL기반 쿼리DSL 모듈(querydsl-sql)에서는 union을 지원하므로 해당 메소드가 활성화된 것으로 보입니다. 하지만 일반적인 JPA 기반 프로젝트에서는 사용하기 어렵습니다.

목록으로

지금 가입하면 모든 질문의 답변을 볼 수 있어요!