JPA JOIN on JOIN

Dieses Thema JPA - JOIN on JOIN im Forum "Data Tier" wurde erstellt von IWantToBelieve, 8. März 2015.

Thema: JOIN on JOIN Ich nutze OpenJPA von Apache für meine Webseite und würde gerne in meiner NamedQuery auf einer gejointen Tabelle ein...

  1. Ich nutze OpenJPA von Apache für meine Webseite und würde gerne in meiner NamedQuery auf einer gejointen Tabelle ein FETCH JOIN anwenden.

    Ich habe drei Tabellen (Auto, Fahrer, Wohnsitz). Ein Auto hat einen Fahrer (n:1) und ein Fahrer kann mehrere Wohnsitze haben (1:n). Jetzt möchte ich zu allen Autos den Fahrer und die Wohnsitze anzeigen lassen, dazu habe ich folgendes Statement:

    Code (Text):

    SELECT a FROM Auto a JOIN FETCH a.fahrer JOIN FETCH a.fahrer.wohnsitze
     
    Beim ersten Aufruf der Webseite wird jetzt alles korrekt angezeigt. Es wird ein SELECT auf die Tabelle Auto mit dem Join auf Fahrer abgesetzt und zusätzlich zu jedem Fahrer ein SELECT auf die Tabelle Wohnsitze.

    Wenn ich ein Reload der Seite mache, dann klappt das aber nicht mehr, dann wird nur das das SELECT auf Auto mit dem Join auf Fahrer abgesetzt. Das SELECT auf die Tabelle Wohnsitze fehlt. Warum klappt es bei ersten Mal und danach nicht mehr?

    Ich habe alle Joins im Model als FetchType.LAZY definiert. Ich möchte über die NamedQueries mir die Tabellen dazujoinen, die ich benötige. Mit FetchType.EAGER habe ich das Problem von oben natürlich nicht.

    Aber wenn beim ersten Aufruf alles wie gewünscht funktioniert, frage ich mich, warum nicht beim zweiten Mal?
     
  2. Vielleicht helfen dir diese Java-Grundlagen weiter --> *Klick*