2016-05-10 18 views
0

我是新來的Grails,我試圖刪除所有我得到的對象(ArrayList)。如何解決「沒有方法的簽名:java.util.ArrayList.delete()」來刪除一個對象?

這是獲取數據的方法,即工作:

def authRequest = User.findAllByExpiresLessThan(currentDate) 

這就是我想要做的事:

if(authRequest){ 
    authRequest.delete() 
} 

這是錯誤:

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() 

在此先感謝。

回答

2

authRequest.delete()如果只有1個對象就可以工作。

當您使用findAllBy而不是findBy時,它將返回一個對象數組,而不是一個。在這種情況下,你可以使用"Spread" operator*.),以將它們全部刪除:

authRequest*.delete() 
+1

雖然這工作,因爲它會爲每個對象執行一個單獨的'DELETE'語句,所以效率很低 –

0

我會用HQL原子地刪除所有對象,用單(SQL DELETE)語句

User.executeUpdate('delete User where expires < ?', [currentDate]) 
相關問題