java – Android Room @Delete with parameters-ThrowExceptions

Exception or error:

I know I can’t use DELETE in a query (that is a shame by the way), I will get the following error:

<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>

But I can’t use @Delete(WHERE... xxx)
So how do I delete a specific row by a parameter?

How to solve:

The beauty of room is, we play with the objects. As per requirement you can use
for kotlin:

fun delete(model: LanguageModel)

for Java:

void delete(LanguageModel model)

it will delete the exact object which is stored in the db with the same values. LanguageModel is my model class and it works perfectly.


Actually, you can use @Query to perform a delete.

@Query("DELETE FROM users WHERE user_id = :userId")
abstract void deleteByUserId(long userId);

Extracted from Query javadoc:

UPDATE or DELETE queries can return void or int. If it is an int, the
value is the number of rows affected by this query.

Leave a Reply

Your email address will not be published. Required fields are marked *