如何使用 Room 仅存储原始类型为 Long 的 table?

How to store only table with primitive type of Long using Room?

我有 ID 列表,Long 类型也是主键,我想存储在数据库中,如果我像这样存储

 @Dao
public interface UserId {
 @Query("SELECT * FROM ids")
Flowable<List<Long>> allIds();


 @Insert(onConflict = OnConflictStrategy.REPLACE)
 List<Long> insert(List<Long> Ids);}

错误:参数的类型必须是用@Entity 注释的class 或其collection/array。 这意味着我需要一个只有一种 Long 字段类型的 class?我应该用 @Entity

注释
@Insert(onConflict = OnConflictStrategy.REPLACE)
List<Long> insert(List<Long> Ids);

A Long 不是一个实体。您不能使用 @Insert 插入 Long 对象,部分原因是 Long 值没有 table。

您需要:

  • @Insert 实际实体,或

  • 创建一个 @Query 方法,使用 SQL 解释你打算用这些 Long 值做什么

此外,我怀疑您现有的 @Query 现在或将来都无法正常工作,因为 Room 不知道 Long 您的期望。如果您碰巧在定义 userfavoritestore table 的任何实体中只有一个 suitable 字段,它 可能 起作用。但是一旦你有 2+ 个整数字段,Room 将不知道你想要哪个。将 @Query 中的 * 替换为您想要 return.

的实际列名