首页 > 解决方案 > 如何在 Room @Query 中使用参数字段?

问题描述

我有一个User带有 field 的类id,所以我想用 Room 运行以下查询:

@Query("SELECT * FROM ticket where user_id = :user.id")
LiveData<Ticket> loadFromUser(User user);

但是我在 Android Studio 上得到了错误标记,user.id我在网上找到的所有示例都只使用@Query方法的直接参数,通常是 aString或 an int

是否可以在 Room 中使用对象的字段@Query?如果是肯定的,那么引用它的正确方法是什么。

标签: androidandroid-room

解决方案


您不能将这样的参数传递给房间。它不支持完整的表达语言。您必须使用原始类型来传递参数。像这样,

@Query("SELECT * FROM ticket where user_id = :user_id")
LiveData<Ticket> loadFromUser(String user_id);

推荐阅读