title: Hibernate Criteria returns children multiple times with FetchType.EAGER
body: <p>I have an <code>Order</code> class that has a list of <code>OrderTransactions</code> and I mapped it with a one-to-many Hibernate mapping like so:</p>
  
  <pre><code>@OneToMany(targetEntity = OrderTransaction.class, cascade = CascadeType.ALL)
  public List&lt;OrderTransaction&gt; getOrderTransactions() {
      return orderTransactions;
  }
  </code></pre>
  
  <p>These <code>Order</code>s also have a field <code>orderStatus</code>, which is used for filtering with the following Criteria: </p>
  
  <pre><code>public List&lt;Order&gt; getOrderForProduct(OrderFilter orderFilter) {
      Criteria criteria = getHibernateSession()
              .createCriteria(Order.class)
              .add(Restrictions.in("orderStatus", orderFilter.getStatusesToShow()));
      return criteria.list();
  }
  </code></pre>
  
  <p>This works and the result is as expected.</p>
  
  <p>Now <strong>here is my question</strong>: Why, when I set the fetch type explicitly to <code>EAGER</code>, do the <code>Order</code>s appear multiple times in the resulting list?</p>
  
  <pre><code>@OneToMany(targetEntity = OrderTransaction.class, fetch = FetchType.EAGER, cascade = CascadeType.ALL)
  public List&lt;OrderTransaction&gt; getOrderTransactions() {
      return orderTransactions;
  }
  </code></pre>
  
  <p>How would I have to change my Criteria code to reach the same result with the new setting?</p>