NHibernate
  1. NHibernate
  2. NH-2534

Join-fetching a many-to-one with property-ref results in select n+1 problem

    Details

    • Type: Bug Bug
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: 3.0.0.GA
    • Fix Version/s: None
    • Component/s: Core

      Description

      The attached test shows that a many-to-one association referencing an unique property (instead of the Id) results in a select n+1 problem. Although the first statement contains the correct join, all associated entities are fetched one by one after the join select. (Entities with the same value in the unique column are even fetched more than once.)

      The interesting point is that this bug only occurs if the referenced entities are already in the session cache. If they are not, no additional select statements are created.

        Activity

        Hide
        Keith Shannon added a comment -

        I was also able to reproduce this issue in NH 2.1.2, so it's a long-standing issue with join fetching.

        Show
        Keith Shannon added a comment - I was also able to reproduce this issue in NH 2.1.2, so it's a long-standing issue with join fetching.
        Hide
        Johan Haest added a comment -

        Any workarounds yet? Or even fixes?

        Show
        Johan Haest added a comment - Any workarounds yet? Or even fixes?
        Hide
        Kamil Kliczbor added a comment -

        Johan Haest: we had the same issue in our project. The symptom was the same. Finally we gave up with the property-ref reference and switched to normal foreign key relationship (it was possible). And I think that solution is not so trivial.

        Show
        Kamil Kliczbor added a comment - Johan Haest : we had the same issue in our project. The symptom was the same. Finally we gave up with the property-ref reference and switched to normal foreign key relationship (it was possible). And I think that solution is not so trivial.
        Hide
        Johan Haest added a comment -

        Not when your join is not on the primary key of the many to one class right?

        Show
        Johan Haest added a comment - Not when your join is not on the primary key of the many to one class right?
        Hide
        Kamil Kliczbor added a comment -

        Right. We had join to other column that Id, but under certain circumstances we could abandon this approach.

        Show
        Kamil Kliczbor added a comment - Right. We had join to other column that Id, but under certain circumstances we could abandon this approach.

          People

          • Assignee:
            Unassigned
            Reporter:
            cremor
          • Votes:
            13 Vote for this issue
            Watchers:
            12 Start watching this issue

            Dates

            • Created:
              Updated:

              Who's Looking?