2016-05-10 7 views
0

Ich bin neu in Grails und ich versuche, alle Objekte (ArrayList) zu löschen, die ich bekomme. Dies istWie behebt man "Keine Signatur der Methode: java.util.ArrayList.delete()" um ein Objekt zu löschen?

if(authRequest){ 
    authRequest.delete() 
} 

der Fehler:

Dies ist die Methode, die Daten zu bekommen, das funktioniert: zu tun

def authRequest = User.findAllByExpiresLessThan(currentDate) 

Und das ist, dass ich versuche

Caused by: groovy.lang.MissingMethodException: No signature of method: java.util.ArrayList.delete() is applicable for argument types:() values: [] 
Possible solutions: sleep(long), sleep(long, groovy.lang.Closure), clear(), clear(), clear(), clone() 

Vielen Dank im Voraus.

Antwort

2

authRequest.delete() würde funktionieren, wenn es nur 1 Objekt war. Wenn Sie findAllBy anstelle von findBy verwenden, gibt es ein Array von Objekten statt nur eines zurück. In diesem Fall können Sie "Spread" operator (*.) verwenden, um zu löschen sie alle:

authRequest*.delete() 
+1

Während dieser Wille funktionieren, ist es insofern ineffizient, als es für jedes Objekt eine separate DELETE-Anweisung ausführt –

0

würde ich HQL verwenden alle atomar die Objekte zu löschen, mit einem einzigen (SQL DELETE) Anweisung

User.executeUpdate('delete User where expires < ?', [currentDate])