개발자
안녕하세요 현재 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
답변 0
첫 답변을 기다리고 있어요.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 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 기반 프로젝트에서는 사용하기 어렵습니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!