Order
목록 이있는 클래스가 있고 다음 OrderTransactions
과 같이 일대 다 Hibernate 매핑으로 매핑했습니다.
@OneToMany(targetEntity = OrderTransaction.class, cascade = CascadeType.ALL)
public List<OrderTransaction> getOrderTransactions() {
return orderTransactions;
}
이러한 에는 다음 기준으로 필터링하는 데 사용되는 Order
필드도 있습니다 orderStatus
.
public List<Order> getOrderForProduct(OrderFilter orderFilter) {
Criteria criteria = getHibernateSession()
.createCriteria(Order.class)
.add(Restrictions.in("orderStatus", orderFilter.getStatusesToShow()));
return criteria.list();
}
이것은 효과가 있으며 결과는 예상대로입니다.
이제 내 질문은 다음과 같습니다. 페치 유형을 명시 적으로로 설정 EAGER
하면 Order
s가 결과 목록에 여러 번 표시 되는 이유는 무엇 입니까?
@OneToMany(targetEntity = OrderTransaction.class, fetch = FetchType.EAGER, cascade = CascadeType.ALL)
public List<OrderTransaction> getOrderTransactions() {
return orderTransactions;
}
새 설정으로 동일한 결과에 도달하려면 기준 코드를 어떻게 변경해야합니까?