Zwei Tabellen mit UNION ALL auf POJO mappen?

Dieses Thema Zwei Tabellen mit UNION ALL auf POJO mappen? im Forum "Data Tier" wurde erstellt von Goldfish, 25. Juni 2015.

Thema: Zwei Tabellen mit UNION ALL auf POJO mappen? Hi, ich versuche gerade eine Entity zu erzeugen, dessen Ergebnisse aus einem "UNION ALL" Ergebnis erzeugt wird. Ich...

  1. Hi, ich versuche gerade eine Entity zu erzeugen, dessen Ergebnisse aus einem "UNION ALL" Ergebnis erzeugt wird. Ich möchte nicht für beide Tabellen extra Code haben und daher wenn möglich alles über eine abbilden. Die Tabellen existieren bereits, und sollen über die Anwendung nicht verändert, sondern nur ausgelesen werden. Da die Applikation keinerlei Interesse an der logischen Unterscheidung hat, die die beiden Tabellen trennt (alle spaltennamen und Typen sind identisch), will ich das über ein "UNION ALL" in einer Tabelle abbilden.

    Also

    select * from TabelleA
    UNION ALL
    select * from TabelleB

    und das halt auf das entsprechende POJO "TabellenErgebnis" oder ähnlich abbilden. Wäre super, wenn mir jemand helfen kann.
     
  2. Vielleicht hilft dir das Java-Tutorial weiter. Hier klicken --> (Klick)
  3. stg
    stg
    In deinem konkreten Fall würde ich einfach einen View auf der Datenbank abbilden, in dem du beide Tables auf die gewünschte Weise zusammenführst und dann nur die View mappen.
     
  4. auch eien vernünftige Möglichkeit. Aber mir geht es halt speziell darum, wie sowas mit JPA gemacht werden kann.
     
  5. stg
    stg
    afaik rein mit JPA gar nicht. Verschiedene Provider sind da unterschiedlich weit mit ihren Ansätzen, aber die JPA spec selbst gibt das nicht her, glaube ich.

    Ich sehe aber keinen Grund dazu sich das Leben hier unnötig schwer zu machen. Was spricht für dich gegen die Verwendung einer View? JPA macht keinen Unterschied zwischen View und Table, du kannst die View in der Datenbank also ganz genau so mappen, wie du es sonst auch bei normalen Tables machst.
     
  6. es spricht gar nichts dagegen. Ich hab mich halt nur verrückt gemacht, weil ich halt wissen wollte, wie das ganze über den rein programmatischen Weg läuft. Das liegt unter anderem daran, dass ich auch nur Leserechte für die Tabellen habe und ich entsprechend erst zu jemandem gehen muss, der die View für mich anlegt.
    Aber der Hauptgrund war einfach, dass ich halt nur den programmatischen weg kennen wollte. Den ich leider nicht fand. Aber danke für die Antwort. Jetzt weiß ich, dass das scheinbar noch nciht so richtig klappt, wenn die einzelnen Provider noch nicht so weit sind. :)
     
  7. stg
    stg
    Du kannst auch beide Tables getrennt mappen und einfach zwei query absetzen. Im JPQL query kannst du in beiden Fällen mittels NEW neue POJO Instanzen erstellen und diese dann statt der Entity-Instanzen zurückgeben. Da hast du dann im Endeffekt aber genau den Extra-Code, den du ja vermeiden willst. Du kannst auch mit Vererbung arbeiten. Oder du setzt reine SQL statements ab und mapst von Hand. Der sauberste Weg sollte in diesem Fall aber wohl der zuerst von mir genannte sein.
     
  8. Schau dir jetzt hier den Kurs an und lernen Java zu programmieren: --> Hier klicken, um mehr zu erfahren (Klick)