# Hibernate, Criteria Query



## dwn8 (19. Mai 2009)

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.

```
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


----------



## byte (19. Mai 2009)

In HQL würde das ungefähr so aussehen:

```
select distinct u
from BrowserTest t
left join t.url u
where t.version != 'foo' and t.browser != 'bar'
```


----------



## dwn8 (19. Mai 2009)

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')


----------

