我有Order一个列表的类,OrderTransactions我用一对多的Hibernate映射映射它,如下所示:
@OneToMany(targetEntity = OrderTransaction.class, cascade = CascadeType.ALL)
public List<OrderTransaction> getOrderTransactions() {
return orderTransactions;
}
Run Code Online (Sandbox Code Playgroud)
这些Order还有一个字段orderStatus,用于使用以下条件进行过滤:
public List<Order> getOrderForProduct(OrderFilter orderFilter) {
Criteria criteria = getHibernateSession()
.createCriteria(Order.class)
.add(Restrictions.in("orderStatus", orderFilter.getStatusesToShow()));
return criteria.list();
}
Run Code Online (Sandbox Code Playgroud)
这有效,结果如预期.
现在这里是我的问题:为什么,当我明确地设置fetch类型时EAGER,Orders会在结果列表中多次出现?
@OneToMany(targetEntity = OrderTransaction.class, fetch = FetchType.EAGER, cascade = CascadeType.ALL)
public List<OrderTransaction> getOrderTransactions() {
return orderTransactions;
}
Run Code Online (Sandbox Code Playgroud)
如何更改我的Criteria代码以使用新设置达到相同的结果?