tengo una clase como esta:Obtener los identificadores de todos los objetos en una lista
class Foo {
String bar
}
estoy tratando de obtener los identificadores de todos los objetos cuya Foo
bar
cadena está en la lista bars
. Lo he probado varias maneras, siempre recibiendo el mismo error:
java.lang.String cannot be cast to java.util.Collection
Algunas de las cosas que he intentado:
def ids = Foo.findAllByBarInList(bars)*.id
def ids = Foo.findAllByBarInList(bars).collect{ it.id }
def ids = Foo.findAllByBarInList(bars).collect{ it -> it?.id }
ACTUALIZACIÓN:
yo estaba haciendo bars
con split por lo era una matriz, no una lista. Me sorprendió porque Foo.findAllByBarInList(bars)
devolvió mis objetos Foo
muy bien, solo cuando intenté recopilar los identificadores, falló. Ahora hago bars
con tokenize y todo está bien.
Agregué la etiqueta groovy a esta pregunta porque tanto el método 'collect' como el operador spread '* .' están basados en groovy. – ubiquibacon
¿Estás seguro de que la lista con la que estás comprobando está configurada correctamente como una lista? Usar 'def ids = Foo.findAllByBarInList (bars) *. Id' funciona para mí. – Kelly
Dejo la etiqueta Groovy desactivada porque Grails usa Groovy, por lo que no es necesario, y es solo el uso de Groovy en Grails, no una pregunta específica de Groovy. Un experto en Groovy que no tenga experiencia con Grails no podría ayudarte. Del mismo modo, puede omitir las etiquetas Java, GORM, Hibernate, Spring, Programming;) –