# [JPA/JPQL] member of



## Smoothi (9. Dez 2011)

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


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

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?

```
SELECT device FROM Device device
WHERE device NOT MEMBER OF :devices
```
So funktioniert es leider nicht


----------



## KSG9|sebastian (12. Dez 2011)

Verwende doch IN ?


```
FROM Device d where d IN (:devices)
```


----------



## Smoothi (12. Dez 2011)

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


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

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


----------



## KSG9|sebastian (13. Dez 2011)

Bin mir Hibernate firm, mit Eclipselink eher weniger. So wie ich das sehe mag er die Objekte nicht sondern hätte gerne Keys

Hier gibts wohl Lösungen zu:
Java Persistence
criteria - JPA criteriabuilder "IN" predicate on foreign key error: Object comparisons can only use the equal() or notEqual() operators - Stack Overflow


----------



## Smoothi (21. Dez 2011)

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


----------

