Java/JPA (2) 썸네일형 리스트형 QueryDSL에서 서브쿼리에 limit이 안 먹는 이유 Spring + JPA + QueryDSL 조합으로 작업 중, 서브쿼리에 .limit(1)을 분명히 썼는데도 아래와 같은 에러가 발생했다.Subquery returns more than 1 row"어? limit 걸었는데 왜 여러 row가 나와?"처음엔 단순한 실수인 줄 알았지만, 파고들어 보니 구조적인 이슈였다. 1. 원인QueryDSL은 내부적으로 다음과 같은 과정을 거쳐 쿼리를 실행한다.QueryDSL → JPQL → SQL (DB 방언 적용) → 실행이때 .limit() 같은 조건은 DB 방언(Dialect) 에 의해서 SQL에 적용되는데, 문제는 서브쿼리, 특히 아래 두 곳에서는 limit이 무시될 수 있다.스칼라 서브쿼리: select 절 안에 들어간 서브쿼리where 서브쿼리: where 절.. 실전! 스프링 부트와 JPA 활용 (김영한) - 요구사항 분석 - 요구사항 분석 - 회원은 상품을 주문할수있다. 주문 시 여러 종류의 상품을 선택 할 수있다. - 기능 목록 - 회원 기능(회원 등록, 회원 조회) 상품 기능(상품 등록, 상품 수정, 상품 조회) 주문 기능(상품 주문, 주문내역 조회, 주문 취소) - 도메인 모델 분석 - 회원과 주문의 관계: 회원은 여러번 주문 할 수있다(일대다) 상품과 주문의 관계: 주문할 때 여러 상품을 선택할 수 있다. 반대로 같은 상품도 여러번 주문할 수 있다. 주문 상품이라는 모델을 만들어서 다대다 관계를 일대다, 다대일 관계로 풀어냄 - 데이터 중심 설계의 문제점 - 위에 방식은 객체 설계를 테이블 설계의 맞춘 방식 테이블의 외래키를 객체에 그대로 가져옴 객체 그래프 탐색이 불가능 참조가 없으므로 UML도 잘못됨 코드로 알.. 이전 1 다음