# [Hibernate] Problem mit LEFT JOIN



## Guest (10. Jul 2008)

Hallo,

ich habe 2 Tabellen dessen Daten ich mit einander verbinden möchte.

Dafür würde ich mittels Hibernate gern so ein Gebilde absetzen:


```
From
  tabelle1 As t1 Left Join
  tabelle2 t2 On t1.id = t2.other_id
```

Funktioniert allerdings leider nicht, da Hibernate mit dem ON nicht klarkommt.
Lasse ich das ON weg funktioniert es nicht, da Hibernate nicht weiss wie er beide tabellen mit einander verknüpfen soll.

Habe bisher 2 Workarounds gefunden ...
Zum einen statt eines HQL Querys ein SQL Query abzusetzen, was dann allerdings nur auf MYSQL Servern (und MSSQL) Servern läuft oder?

Zum anderen die "alte" Join Methode zu machen und so einen Code abzusetzen:


```
From
  tabelle1 As t1, tabelle2 t2 
where
 t1.id = t2.other_id
```

Wenn jetz in der Tabelle 2 kein Eintrag mit dieser ID zurückkommt bekomme ich allerdings gar keine Daten und nicht wie bei einem "richtigen" Left Join wenigstens alle Daten der linken Seite ...

Gibt es hier für den letzten Workaround vllt. noch eine ergänzung um alles von Links zu bekommen?
Oder aber => auf welchen Datenbanken läuft mein Query nicht mehr wenn ich es als SQL Query absetze?


----------



## SlaterB (10. Jul 2008)

ich habe sowas auch schon gesucht, aber bisher nirgendwo ein Beispiel gefunden,
der einzige Left Join, der funktioniert, ist über ein gemapptes Feld

a la

```
from Cat as cat 
    join cat.mate as mate
    left join cat.kittens as kitten
```
http://www.hibernate.org/hib_docs/reference/en/html/queryhql.html


----------



## Gast (10. Jul 2008)

gibts denn ne möglichkeit die beiden zu mappen ohne das er mit die entsprechenden id schlüssel nochmal anlegt und die vorhandenen schlüssel nimmt?


----------



## Gast (10. Jul 2008)

und: welche Datenbanken werden denn wenn ich es über den createSQL Befehl Löse NICHT unterstützt?


----------



## SlaterB (10. Jul 2008)

mehrfaches Mapping gibts durchaus, glaube ich,
habe ich aber noch nicht so intensiv gemacht, einfach ausprobieren,
wenn die Daten aus der DB geladen werden gibts keinen Grund, irgendwelche Ids anzulegen,
du erhälst natürlich andere Objekte als ursprünglich,


wenn du dagegen meinst, die normalen Mapping-Klassen um diese Verbindung zu erweitern, 
dann kann ich nicht absehen, was das für Auswirkungen hat,
du gibst ja auch gar keine Infos zu den Tabellen (also Klassen), Art der Erzeugung von Objekten usw.

für mich musst du das aber auch nicht geben, verstehe nicht ganz so viel davon 

-----

zum SQL bin ich genausowenig Experte, bin aber guter Hoffnung, dass es doch einen SQL-Standard für Left Join geben muss,
wenn du den verwendest, dann sollte es überall funktionieren


----------



## Guest (10. Jul 2008)

SlaterB hat gesagt.:
			
		

> zum SQL bin ich genausowenig Experte, bin aber guter Hoffnung, dass es doch einen SQL-Standard für Left Join geben muss,
> wenn du den verwendest, dann sollte es überall funktionieren



naja, zumindest Oraacle wird ja z.B. sicherlich rausfallen oder nicht?!


----------



## SlaterB (10. Jul 2008)

entweder ja oder nein, mehr kann ich dazu nicht sagen falls du auf eine Antwort von mir wartest


----------



## FenchelT (10. Jul 2008)

Anonymous hat gesagt.:
			
		

> SlaterB hat gesagt.:
> 
> 
> 
> ...



Warum?


----------

