Vermeulen created OPENJPA-2299:
----------------------------------

             Summary: N+1 select when eager fetching two collection fields of 
the same entity type
                 Key: OPENJPA-2299
                 URL: https://issues.apache.org/jira/browse/OPENJPA-2299
             Project: OpenJPA
          Issue Type: Bug
          Components: jdbc, jpa, performance
    Affects Versions: 2.2.1, 2.3.0
            Reporter: Vermeulen


I have a ProductOrder entity that has two @OneToMany lists of 
ProductOrderLines. When selecting from ProductOrder, eager fetching does not 
seem to recurse into the second list so that each field of each 
ProductOrderLine in the second list is fetched using a separate "load field" 
operation.

The problem does not occur when there is only one List.

@Entity
public class ProductOrder {
        @JoinColumn(name = "PLANNED_ORDER_ID")
        @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
        private List<ProductOrderLine> plannedOrderLines = new 
ArrayList<ProductOrderLine>();

        @JoinColumn(name = "ACTUAL_ORDER_ID")
        @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
        private List<ProductOrderLine> actualOrderLines = new 
ArrayList<ProductOrderLine>();

Expected nr of queries: 1 (for Order) + 1 (for Order.plannedOrderLines) + 1 
(for Order.actualOrderLines).
Actual nr of queries: same as expected + 1 query for each field of each 
ProductOrderLine in Order.actualOrderLines.

Same problem exists when using @JoinTable instead of @JoinColumn (JPA 2.0 only).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to