Grails: Suche nach Eins-zu-Viele-Assoziationen mit String

8

Ich habe eine folgende Domain-Klasse:

%Vor%

Ich möchte jeden Benutzer finden, der die Rolle ROLE_ADMIN hat. Gibt es eine Möglichkeit das mit dynamischen Findern zu tun? user.findAllByRoles('ROLE_ADMIN') scheint mir einen Fehler zu geben.

UPDATE: Es ist ziemlich einfach, eine Assoziation abzufragen, wo die Klasse A eine Liste der Klasse B Instanzen hat und sowohl A als auch B Domänenklassen sind. Aber hier ist die Klasse A eine Domänenklasse und die Klasse B ist eine einfache Java-Zeichenkette.

Der Code zum Abfragen einer Assoziation, die eine Liste mit anderen Domänenobjekten enthält, würde folgendermaßen aussehen:

%Vor%

Was ich suche, ist eine Möglichkeit, den Wert eines Strings anzugeben, zum Beispiel:

%Vor%

UPDATE 2: Soweit ich gefunden habe, ist es nicht möglich, Kriterien mit Sammlungen primitiver Typen zu verwenden. Es ist jedoch möglich, HQL zu verwenden:

%Vor%

Es ist jedoch nicht so nützlich wie eine findAll oder where Abfrage. Ich kann findAll Methoden nicht verketten, um andere Methoden zu definieren, die zum Beispiel: get ROLE_ADMIN users mit Benutzernamen wie 'xxx' das Umschreiben der ganzen HQL Abfrage erfordert. Vielleicht ist es möglich, über HQL Bedingung in Form eines where Ausdruckes auszudrücken?

    
Pma 19.09.2012, 12:52
quelle

2 Antworten

5

Vielleicht können Sie etwas tun wie:

wenn Sie bereits eine Benutzerliste (userList) haben

%Vor%

Hoffe diese Hilfe!

    
Roberto Perez Alcolea 19.09.2012 13:19
quelle
0

Ich habe das gleiche Problem So finden Sie Datensätze nach Wert in ihrer Assoziierungseigenschaft über DetachedCriteria

Ich habe einige Nachforschungen angestellt und, wie ich festgestellt habe, ist es unmöglich. Das GORM DSL selbst hat keine Methode, um zu überprüfen, dass der Wert in Verbindung enthält. Es enthält nur die folgenden Kriterien in SQL: AND , OR , IN .

Aber! Sie können der Zuordnung als Tabelle in den Kriterien Abfragen nach Association Redux

beitreten     
stokito 13.02.2014 00:17
quelle

Tags und Links