如何在Android Room SQL中使用对象属性?

Le *_*ong 8 android android-room

在 Room 中,我们可以使用基本数据类型从 DAO 进行查询,如下所示

@Query("SELECT * FROM Table WHERE name=:name)
fun fetchAll(name: String)
Run Code Online (Sandbox Code Playgroud)

是否可以像下面这样传递和对象并使用其属性

@Query("SELECT * FROM Table WHERE name=:object.name)
fun fetchAll(object: ClassA)
Run Code Online (Sandbox Code Playgroud)

我找不到任何地方说明如何做到这一点,所以我不确定是否可能以及如何做到这一点。当我在Android Studio中尝试时,它显示错误

小智 0

到目前为止,我认为无法将对象作为参数传递,但您可以使用@RawQuery

在DAO中你可以写

@RawQuery
LiveData<ClassA> loadFromUser(SupportSQLiteQuery query);
Run Code Online (Sandbox Code Playgroud)

并创建您的查询并传递给它。

SimpleSQLiteQuery query  = new SimpleSQLiteQuery("SELECT * FROM table where id = ?") , new Object[]{object.id})
Run Code Online (Sandbox Code Playgroud)

并将此查询传递给 DAO 方法。

yourDao.loadFromUser(query)
Run Code Online (Sandbox Code Playgroud)