首页 文章

带有参数的Android Room @Delete

提问于
浏览
17

我知道我不能在查询中使用 DELETE (顺便说一下这是一种耻辱),我会收到以下错误:

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

但我不能使用 @Delete(WHERE... xxx) 那么如何通过参数删除特定的行?

2 回答

  • 55

    房间的美丽是,我们玩物体 . 根据要求,您可以使用kotlin:

    @Delete
    fun delete(model: LanguageModel)
    

    对于Java:

    @Delete
    void delete(LanguageModel model)
    

    它将使用相同的值删除存储在db中的确切对象 . LanguageModel是我的模型类,它完美地运行 .

  • 14

    实际上,您可以使用@Query执行删除

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

    摘自Query javadoc

    UPDATE或DELETE查询可以返回void或int . 如果是int,则该值是受此查询影响的行数 .

相关问题