# Listen Vergleichen JPA Criteria



## pl4gu33 (23. Jan 2013)

Hallo,... 

ich hab folgendes Problem, ich hab 2 Klassen:

Verein & Person ... diese stehen in einer N:M- Beziehung

Nun habe ich eine Methode, die in der DB per Abfrage prüfen soll, ob es schon einen Verein mit dem Namen und den Mitgliedern gibt:


```
private static boolean existiertderVerein(EntityManager em, Verein verein) {
		CriteriaBuilder cb = em.getCriteriaBuilder();
		CriteriaQuery<Verein> cq = cb.createQuery(Verein.class);
		Root<Verein> vereinsRoot = cq.from(Verein.class);
		cq.where(cb.and(cb.equal(vereinsRoot.get(Verein_.vereinsName),
				verein.getVereinsName()),vereinsRoot.get(Verein_.mitglieder) ???)));
		TypedQuery<Verein> q = em.createQuery(cq);
		if (q.getResultList().isEmpty()) {
			return false;
		}	
		return true;
	}
```

Es soll true zurückgegeben werden, wenn der übergebene Verein mit dem Namen und GENAU der Mitgliederliste (Reihenfolge egal) existiert. Die Abfrage nach dem Namen funzt ohne Probleme, bloß die Abfrage der Liste bekomm ich nicht hin und finde leider auch nicht wirklich viel dazu. Wenn irgendwer nen Link hat immer her damit 

Die Frage ist, ob das überhaupt so geht oder ob irgendwie mit Joins arbeiten muss,... ich hatte es schon mit ".in" probiert, aber das war es nicht, da hab ich halt true zurück bekommen, wenn ein Mitglied gleich war


----------



## Marcinek (23. Jan 2013)

Hi,

das ist keine SQL Abfrage. Also solche Abfragen kann man in SQL nicht abfragen.

Du kannst ansonsten, wenn ein spieler nur einmal im verein sein kann:

verein x spieler , wo der verein = deinem Verein ist und spieler in (deiner liste), dann muss die rückgabemenge = deiner größe der Liste sein.

Gruß,

Martin


----------



## pl4gu33 (24. Jan 2013)

mm okay, dann weiß ich bescheid, dass ich das anders machen muss. okay vielen Dank


----------

