如何使用 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.
的实际列名
我有 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.