Listen Vergleichen JPA Criteria

pl4gu33

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

Java:
	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 🙂
 
Zuletzt bearbeitet:
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
 

Neue Themen


Zurück
Oben