【发布时间】:2020-06-05 15:10:27
【问题描述】:
我试图通过 userId 来限制我的搜索结果。比如
道
@Query("SELECT * FROM exampleTable WHERE userId = :userId");
LiveData<List<Users>> getRecordsByUserId (long userId);
存储库
private long userId;
private LiveData<List<WorkoutLogsAllPojo>> weeklyWorkoutLogs;
public WorkoutLogsRepository(Application application) {
weeklyWorkoutLogs = workoutLogsDao.getWorkoutLogsWeekly(userId);
}
public LiveData<List<WorkoutLogsAllPojo>> getWorkoutLogsWeekly() {
return weeklyWorkoutLogs;
}
视图模型
private long userId;
private LiveData<List<WorkoutLogsAllPojo>> weeklyWorkoutLogs;
public WorkoutLogsViewModel(@NonNull Application application) {
super(application);
weeklyWorkoutLogs = workoutLogsRepository.getWorkoutLogsWeekly(userId);
}
public LiveData<List<WorkoutLogsAllPojo>> getWorkoutLogsWeekly() {
return weeklyWorkoutLogs;
}
活动
private void getWorkoutLogsWeekly() {
workoutLogsViewModel.getWorkoutLogsWeekly(userId).observe(this, new Observer<List<WorkoutLogsAllPojo>>() {
@Override
public void onChanged(List<WorkoutLogsAllPojo> result) {
}
}
);
}
我当前的代码返回 0 条记录。如果我从代码中删除 userId 内容,它将返回所有记录。有人可以帮我在此代码中实现 userId 约束,因此查询将只返回链接到该 userId 的记录。
【问题讨论】:
-
为什么在 where 子句中有破折号?
userId - :userId -
可能是您的 WHERE 子句中的拼写错误:
userId - :userId。你不想要=而不是-? -
那是一个错字,我手动输入了那个查询。它在代码中是一个 =
标签: android android-sqlite android-room