on
QueryDSL 상위버전 설정 및 예제
QueryDSL 상위버전 설정 및 예제
QueryDSL build.gradle 설정
buildscript { ext { set('querydsl.version', '5.0.0') // 상위버전 } } plugins { id 'org.springframework.boot' version '2.5.5' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' } dependencies { implementation 'com.querydsl:querydsl-jpa' implementation 'com.querydsl:querydsl-core' annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa" annotationProcessor 'jakarta.persistence:jakarta.persistence-api' annotationProcessor 'jakarta.annotation:jakarta.annotation-api' } // QueryDSL def querydslDir = "$buildDir/generated" as Object task cleanQueryDsl { delete file(querydslDir) }
QueryDSL 4.0.x list() 메소드 삭제
QueryDSL 4.0.x ~ 버전부터는 list()메소드가 삭제되었다.
https://stackoverflow.com/questions/33102742/mysema-querydsl-theres-no-jpaquerylist-method
대신에, fetch() 메소드를 사용할 수 있다. 그리고 JPAQuery대신에, JPAQueryFactory 클래스를 사용한다.
https://joont92.github.io/jpa/QueryDSL/
https://querydsl.com/static/querydsl/4.4.0/reference/html/ch02.html
= QueryDSL 4.4.0 기준 예제코드
public class ProductRepository { @PersistenceContext private final EntityManager entityManager; public ProductRepository(EntityManager entityManager) { this.entityManager = entityManager; } // 상품목록 public List getProducts() { JPAQueryFactory query = new JPAQueryFactory(this.entityManager); QProduct qProduct = new QProductEntity("product"); return query.selectFrom(qProduct) // select()[전체선택] + from() .where(qProduct.storeEntity.storeId.eq(1)) .orderBy(qProduct.productId.desc()) .offset(0) .limit(20) .fetch(); // list() 메소드를 대신해서 사용한다. } }
from http://xggames.tistory.com/57 by ccl(A) rewrite - 2021-12-13 17:01:38