Zwei Tabellen mit UNION ALL auf POJO mappen?

Goldfish

Bekanntes Mitglied
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.
 

stg

Top Contributor
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.
 

stg

Top Contributor
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.
 

Goldfish

Bekanntes Mitglied
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. :)
 

stg

Top Contributor
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.
 

Ähnliche Java Themen


Oben