能否传递完整对象调用Room DAO函数?查询同释义异拼写单词遇阻
问题解答
是的,你确实需要拆分传递mot和defMot两个参数来实现这个查询。
Room的@Query注解不支持直接引用方法参数对象的嵌套属性(比如:mot.defMot这种写法),这就是IDE报错的原因——Room无法解析这种嵌套的属性引用作为查询参数。
被IDE拒绝的代码示例:
@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>>
调用这个DAO方法时,你只需要从Mot对象中提取出mot和defMot属性值传入即可,逻辑上和最初的思路一致,只是多了一步参数拆分的操作。
内容的提问来源于stack exchange,提问作者Simon W
相关产品推荐
相关产品推荐

