본문 바로가기
Hibernate

onetomany order by 정렬 순서 문제

by 자바초보자 2016. 2. 23.
728x90
A Model의 정렬을 주고
A 에 연결된 onetomany B 객체 목록을 FetchMode.JOIN 사용시
order by 정렬 순서문제로 인해 결과 값이 다르게 나온다.
예)
hibernate query : ~~~~ order by B객체의 정렬값, A객체의 정렬값
원하는건 : ~~~ order by A객체의 정렬값 , B객체의 정렬값
==>JOIN시 어쩔수 없는 스펙사양인듯함.
==>하이버네이트에서는 정렬 방식을 또 한가지 지원함
List 객체를 자바단에서 재정렬 시키도록 설정할 수 있음.
@OneToMany(fetch=FetchType.EAGER)
@Fetch(FetchMode.JOIN)
@JoinColumn(name="MASTER_SKIN_ID", referencedColumnName="MASTER_SKIN_ID", updatable=false, insertable=false)
//@OrderBy("sortNo asc")
@Sort(type = SortType.COMPARATOR, comparator=MasterSkinImageComparator.class)
private List<MasterSkinImage>imageList;
================================
MasterSkinImageComparator .java
package k2web.com.cop.masterskin.service.model;
import java.util.Comparator;
public class MasterSkinImageComparator implements Comparator<MasterSkinImage>{
@Override
public int compare(MasterSkinImage o1, MasterSkinImage o2) {
// TODO Auto-generated method stub
return o1.getSortNo().compareTo(o2.getSortNo());
}
}
=>쿼리문에서는 정렬없이 가져오고, 결과을 받은 후 자바단에서 리스트 컬렉션을 재정렬함.!

 

 

728x90