[JPA/JPQL] member of

Smoothi

Bekanntes Mitglied
Normalerweise kann man ja mittels "MEMBER OF" prüfen, ob sich ein Objekt (nicht) in einer Collection befindet:

Code:
SELECT device FROM Device device
WHERE :object NOT MEMBER OF device.objects

:eek:bjekt übergebe ich mittels setParameter

Gibt es auch eine Möglichkeit das ganze umgekehrt zu verwenden?

Also Ich übergebe eine Liste und lass mir alle Devices anzeigen, die sich in NICHT dieser Liste befinden?
Code:
SELECT device FROM Device device
WHERE device NOT MEMBER OF :devices
So funktioniert es leider nicht :(
 
Zuletzt bearbeitet:

Smoothi

Bekanntes Mitglied
erstmal Danke... "IN" habe ich schon versucht

Code:
String query = "SELECT device FROM Device device WHERE ( device IN (:devices) )";
return em.createQuery(query, Device.class).setParameter("devices", devices).getResultList();
devices ist eine LinkedList


Da kommt aber Folgendes:
Code:
Exception [EclipseLink-6075] (Eclipse Persistence Services - 2.3.0.v20110604-r9504): org.eclipse.persistence.exceptions.QueryException
Exception Description: Object comparisons can only use the equal() or notEqual() operators.  Other comparisons must be done through query keys or direct attribute level comparisons. 
Expression: [
Relation operator [ IN ]
   Base entities.Device
   Parameter devices]

Muss aber gestehen, dass ich mit der Exception nichts anfangen kann ;)
 

Smoothi

Bekanntes Mitglied
Danke erstmal für die Antwort

Die Sache mit dem CriteriaBuilder sieht interessant aus....das würde eventuell etwas Übersicht rein bringen und wenn es funktioniert?! Umso besser ;)

Jedenfalls kann ich damit schön meine Abfragen zusammenbasteln, ohne mit Parameter-Übergaben rumzuhantieren ;)

Ich werde mal einen neuen Thread erstellen, speziell zu dem CriteriaBuilder ;) da gibt noch paar Unklarheiten
 
Zuletzt bearbeitet:

Ähnliche Java Themen


Oben