답변:
지정된 인덱스 열이없는 경우 목록은 Hibernate에 의해 bag으로 처리됩니다 (특정 순서 없음).
Hibernate를 처리 할 때 한 가지 주목할만한 차이점은 단일 쿼리에서 두 개의 다른 목록을 가져올 수 없다는 것입니다. 예를 들어 Person
연락처 목록과 주소 목록 이있는 엔터티가있는 경우 단일 쿼리를 사용하여 모든 연락처와 모든 주소가있는 사람을로드 할 수 없습니다. 이 경우 해결책은 두 개의 쿼리 (카티 전 곱을 피함)를 만들거나 하나 이상의 컬렉션에 a Set
대신 a를 사용하는 것입니다 List
.
그것은 당신이 정의 할 때 최대 절전 모드로 설정을 사용하는 것이 어렵다 equals
및 hashCode
엔티티와 엔티티의 불변의 기능 키가 없습니다.
List를 사용하는 경우 getter 함수에서 'Order BY'절을 지정할 수 있습니다. 세트로는 할 수 없습니다. order by 절은 부분적인 EJBQL을 포함 할 수 있습니다. 예를 들면
@OneToMany
@OrderBy("lastname ASC")
public List<Rating> ratings;
이 필드를 비워두면 목록이 기본 키 값을 기준으로 오름차순으로 정렬됩니다.
@OrderBy
는 Set
. 그 아래에서 Hibernate는를 OrderedSetType
인스턴스화하는 것을 사용 LinkedHashSet
하므로 순서가 유지됩니다. 추가 LinkedHashSet
로 일관성을 위해 엔티티 에서 사용하는 것이 좋습니다 . 출처 : discourse.hibernate.org/t/…