-
연관 관계의 엔티티 기준으로 order 해서 데이터를 가져오고 싶을 때Spring 2021. 11. 6. 12:31
@OneToMany의 관계의 데이터에서 매핑된 엔티티의 아이디 기준으로 데이터를 가지고 오고 싶을 때가 있다.
이럴때 방법은 ①@query로 작성해주는 방법과 ②@OrderBy어노테이션을 통해서 작성할 수 있다.
@Query 어노테이션을 통해 쿼리 작성
@Query(value = "SELECT DISTINCT p FROM Post p LEFT JOIN FETCH p.postImages i ORDER BY i.createdAt DESC",
연관관계의 엔티티의 칼럼을 기준으로 데이터를 가지고 오고 싶을 때 위와 같이 작성해주면 된다.
@Query(value = "SELECT DISTINCT p FROM Post p LEFT JOIN FETCH p.likePosts ORDER BY SIZE(p.likePosts) DESC",
연관관계의 엔티티의 사이즈 기준으로 데이터를 가지고 오고 싶다면 위와 같이 작성해준다.
@OrderBy 어노테이션 사용
@OneToMany(fetch = FetchType.EAGER, mappedBy = "test") @OrderBy("원하는 연관관계 엔티티의 필드 asc(순서)") or @OrderBy(clause = "원하는 연관관계 엔티티의 필드 asc(순서)") List<Test> ts = new ArrayList<Test>();
@OrderBy어노테이션을 사용해서 사용할 수도 있는데 이는 onetomany의 데이터를 eager로 가져와야지만 해당 정렬정보를 통한 데이터를 가져올 수 있다.
(참고한 사이트)
https://developer.jboss.org/thread/186039
'Spring' 카테고리의 다른 글
RESTful API (2) 2021.12.19 트랜잭션 (feat. @Transactional) (0) 2021.12.18 multipart.MaxUploadSizeExceededException 오류 발생시 (0) 2021.11.06 Data too long for column 오류 발생시 (0) 2021.11.06 Amazon S3를 이용해서 파일 저장, 삭제하기 (0) 2021.11.05