gpt4 book ai didi

android - Room Rxjava Single 作为删除响应

转载 作者:搜寻专家 更新时间:2023-11-01 07:42:22 25 4
gpt4 key购买 nike

我遇到了一些来自 Room Library 的编译时错误问题。

我使用的是版本:2.1.0-alpha02

以下 Dao 导致错误:

@Dao()
public interface WorkoutExerciseDao {

[......]
@Update()
Single<Integer> updateWorkout(final WorkoutExercise... workoutExercises);


@Delete
Single<Integer> deleteWorkouts(final WorkoutExercise... user);

@Query("DELETE FROM workout_exercise_table WHERE id IN(:exerciseIds)")
Single<Integer> deleteWorkouts(final long... exerciseIds);
}

目前,第一个带@Delete 注释的方法可以正常编译并按预期工作。如果我添加第二个(在查询方法中删除)它会中断编译并出现错误:

Deletion methods must either return void or return int (the number of deleted rows).

我在这里错过了什么吗?

最佳答案

你是对的,我遇到了这个问题。我不知道原因,但我知道在最新版本的 room 中没有任何方法可以处理这个问题,当你使用查询 DELETE 它说返回类型必须是 void 或 int 但如果你想要将 RX 用于 DELETE 查询,您可以这样做,但可能不是最佳方式:首先将interface 转换为abstract class 并将所有方法转换为abstract method 然后

@Dao
public abstract class WorkoutExerciseDao {

@Update()
abstract Single<Integer> updateWorkout(final WorkoutExercise... workoutExercises);

@Delete
abstract Single<Integer> deleteWorkouts(final WorkoutExercise... user);

@Query("DELETE FROM workout_exercise_table WHERE id IN(:exerciseIds)")
abstract Integer deleteWorkouts(final long... exerciseIds);

Single<Integer> deleteWorkoutsById(final long... exerciseIds) {
return Single.create(emitter -> {
emitter.onSuccess(deleteWorkouts(exerciseIds));
});
}
}

关于android - Room Rxjava Single 作为删除响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53480265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com