调用 Dao-Room 函数时是否可以将整个对象而不是每个成员作为参数传递?

问题描述 投票:0回答:1

我有一个单词表,其中包含单词及其定义。

类是Mot,单词是Mot.mot(主键),它的定义是Mot.defMot。

我想找到与我的单词具有相同定义(但拼写不同)的所有单词。我的第一个计划是编写一个 Dao 函数,将 mot 作为对象传递,以查找具有相同定义的所有单词(相同 mot.defMot 但不同 mot.mot)。

但是在 SQLite 查询中使用对象成员会被 IDE 拒绝。唯一的方法似乎是传递两个参数(mot,defMot)并将它们用于查询。

有人可以证实吗?

拒绝表格(第一个点是波浪形红色下划线):

@Query("SELECT * FROM mots WHERE defMot = :mot.defMot AND mot <> :mot.mot")
fun allOrtho(mot: Mot): LiveData<List<Mot>>

解决方案?:

@Query("SELECT * FROM mots WHERE defMot = :def AND mot <> :mot")
fun allOrtho(mot: String, def: String): LiveData<List<Mot>>
function object parameters android-room dao
1个回答
0
投票

你可以拥有/使用类似的东西:-

@Query("SELECT * FROM mots WHERE defMot = :def AND mot <> :mot")
fun allOrtho(mot: String, def: String): LiveData<List<Mot>>

结合:-

@Query("") /* not really needed */
fun allOrthoMain(mot: Mot): LiveData<List<Mot>> {
   return allOrtho(mot.mot,mot.defMot)
}
© www.soinside.com 2019 - 2024. All rights reserved.