querydsl 에서 서브쿼리로 exists 를 사용하는 예제이다.

쿼리 성능상 in 보다는 exists 를 사용하는게 유리하다.

게시글 댓글에 특정 단어가 있는 게시물을 검색하는 쿼리이다.

 

쿼리문

SELECT * 
FROM Board A
WHERE EXISTS (SELECT 1 FROM Comment WHERE no = A.no AND content LIKE '%내용%')
;

 

위 쿼리를 querydsl 로 표현하면 아래와 같다.

 

querydsl

List<Board> list = 
	query.selectFrom(board)
		.where(JPAExpressions.selectFrom(comment).where(comment.board.eq(board)
        	.and(comment.content.contains("내용"))).exists())
		.fetch();

 

'Java > JPA' 카테고리의 다른 글

JPA QueryDSL 에서 MAX 엔티티 가져오기  (0) 2019.10.07

+ Recent posts