¿Es posible devolver Flow <List <Long>> después de insertar Room?

Sep 23 2020

¿Es posible devolver Flow<List<Long>>después de Roominsertar?

Algo como esto:

@Insert(onConflict = REPLACE)
suspend fun insert( notesModel: List<NotesModel>): Flow<List<Long>>

Cuando lo hago, obtengo una excepción:

error: No estoy seguro de cómo manejar el tipo de retorno del método de inserción.

Respuestas

1 aminography Sep 23 2020 at 19:51

AFAIK, no puedes. El tipo de retorno de @Insertlas funciones comentadas podría ser Unit, Long, List<Long>, o Array<Long>.

Sólo @Querylas funciones comentadas son capaces de devolver los objetos observables como LivaData, Flow, Single, Flowable, etc . Debido a que las @Queryfunciones están diseñadas para poder reflejar cambios en db.

Aquí hay una cita de la documentación oficial :

Si el método @Insert recibe solo 1 parámetro, puede devolver un long, que es el nuevo rowId para el elemento insertado. Si el parámetro es una matriz o una colección, debería devolver long [] o List en su lugar.