web-dev-qa-db-fra.com

Android Salle @Supprimer avec des paramètres

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?

38
Jack

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.

40
Awais

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.

100
Maragues