Ho una classe come questa:Ottenere gli ID di tutti gli oggetti in un elenco
class Foo {
String bar
}
Sto cercando di ottenere gli ID di tutti gli oggetti la cui Foo
bar
String è nella lista bars
. Ho provato diversi modi, ricevendo sempre lo stesso errore:
java.lang.String cannot be cast to java.util.Collection
Alcune delle cose che ho provato:
def ids = Foo.findAllByBarInList(bars)*.id
def ids = Foo.findAllByBarInList(bars).collect{ it.id }
def ids = Foo.findAllByBarInList(bars).collect{ it -> it?.id }
UPDATE:
stavo facendo bars
con split così era un array, non una lista. Mi ha buttato fuori perché Foo.findAllByBarInList(bars)
ha restituito gli oggetti bene, solo quando ho provato a raccogliere gli id ha avuto esito negativo. Ora faccio bars
con tokenize e tutto va bene.
Ho aggiunto il tag groovy a questa domanda perché sia il metodo 'collect' che l'operatore di spread' * .' sono basati su groovy. – ubiquibacon
Sei sicuro che la lista che stai controllando sia impostata correttamente come una lista? Usando 'def ids = Foo.findAllByBarInList (barre) *. Id' funziona per me. – Kelly
Lascerei fuori il tag Groovy da quando Grails usa Groovy, quindi non è necessario, ed è solo l'uso di Groovy in Grails, non una domanda specifica di Groovy. Un esperto Groovy che non ha esperienza con Grails non sarebbe in grado di aiutarti. Allo stesso modo puoi omettere i tag Java, GORM, Hibernate, Spring, Programming;) –