2016-05-19 6 views
0

Ich versuche eine Abfrage zu schreiben, die überprüft, ob alle Elemente in einem Array in einem einzelnen Datensatz gehören.Dynamic Spring Data JPA-Abfrage mit Array

Genau wie für zwei Variablen ich meine zweite Parameter ist ein Array von User-IDs, schreiben

@Query("from #{#entityName} c where c.channelType = 'group' and exists (from UserChannel u where c.id = u.channel.id and u.user.id = :userId) and exists (from UserChannel u where c.id = u.channel.id and u.user.id = :userId2)") 
    Set<Channel> findGroupChannelsByUserIds(@Param("userId") int userId, @Param("userId2") int userId2); 

Wenn wie kann ich die Abfrage dann schreiben?

Antwort

0

Ich bin nicht 100% was Sie meinen "alle Elemente des Arrays erfüllen eine Bedingung". Aber es sieht so aus, als ob Sie einen "in" Zustand brauchen.

können Sie

sagen
...u.user.id in :userId2 

wo userid2 eine Liste ist. (funktioniert mit Spring-Daten 1.9.4 - funktioniert möglicherweise nicht mit viel früheren Versionen)

+0

Danke für Ihre Antwort. Was ich meinte ist, wenn ich ein Array von Benutzer-IDs habe, die eine Bedingung wie exists erfüllen müssen (aus UserChannel u, wo c.id = u.channel.id und u.user.id =: userId, wie kann ich dann diese Abfrage schreiben . – userx

0

Ich folgte dieser Antwort: Spring JPA Repository dynamic query, um es zu lösen.

Ich musste eine andere interface erstellen und Umsetzung davon bereitstellen. Dann habe ich diese Schnittstelle in meinem repository erweitert.