Hibernate, Criteria Query

Status
Nicht offen für weitere Antworten.

dwn8

Mitglied
Hallo,

ich sitze schon seit geraumer Zeit an einem Query-Problem. Hier erstmal die zwei Entity-Klassen, etwas vereinfacht um einen besseren Überblick zu haben.
Code:
Url {
  long id;
  String siteurl;
}

BrowserTest {
  long id;
  String browser;
  String version;
  @ManyToOne(optional=false)
  @JoinColumn(name="url_fk")
  Url url;
}

Das Query-Ergebnis soll alle Urls beinhalten, die kein Browsertest mit einem bestimmten Wert für browser/version haben. Falls es den Query vereinfacht, bin ich auch bereit die Assoziationen zu ändern. Die Abfrage muss auch nicht unbedingt in Criteria sein, aber wünschenswert wäre es 😉
Ich hänge an diesem Problem schon ewig 🙁

Gruß
dwn8
 
In HQL würde das ungefähr so aussehen:
SQL:
select distinct u
from BrowserTest t
left join t.url u
where t.version != 'foo' and t.browser != 'bar'
 
Ok es klappt teilweise. Urls ohne BrowserTests und mit einem, den man ausschließt, werden schon mal gefunden.
Wenn jedoch eine Url mehrere BrowserTests hat und einer davon ist derjene den man ausschließt, wird diese Url trotzdem aufgeführt. Wahrscheinlich weil es noch andere BrowserTest-Einträge gibt.
Wir kommen der Sache aber näher 😉

Edit: Mit dieser Abfrage hats geklappt:
SELECT u from Url u WHERE u NOT IN (SELECT t.url FROM BrowserTest t WHERE t.browser = 'Firefox' AND t.version = '3.0.3')
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.

Zurück
Oben