Je sais que je ne peux pas utiliser DELETE
dans une requête (ce qui est dommage, en passant), j'obtiendrai l'erreur suivante:
<i>Error:error: Observable query return type (LiveData, Flowable etc) can only be used with SELECT queries that directly or indirectly (via @Relation, for example) access at least one table.</i>
Mais je ne peux pas utiliser @Delete(WHERE... xxx)
Alors, comment puis-je supprimer une ligne spécifique par un paramètre?
La beauté de la pièce est, nous jouons avec les objets. Selon les besoins, vous pouvez utiliser pour Kotlin:
@Delete
fun delete(model: LanguageModel)
pour Java:
@Delete
void delete(LanguageModel model)
cela supprimera l'objet exact qui est stocké dans la base de données avec les mêmes valeurs. LanguageModel est ma classe de modèles et cela fonctionne parfaitement.
En fait, vous pouvez utiliser @Query
pour effectuer une suppression.
@Query("DELETE FROM users WHERE user_id = :userId")
abstract void deleteByUserId(long userId);
Extrait de Query javadoc :
Les requêtes UPDATE ou DELETE peuvent renvoyer void ou int. S'il s'agit d'un entier, la valeur correspond au nombre de lignes affectées par cette requête.