-
연관 관계의 엔티티 기준으로 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
How to sort @OneToMany mapping class?| JBoss.org Content Archive (Read Only)
Hi Stefano Travelli, Thank you for reply, I tried it and it was working but when i change the position of element and run the code it doesn't sort the list of element by order, and the list return zero size it doesn't map. please help me.. Thank you
developer.jboss.org
'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