Java 房间数据库。插入成功,但未找到数据

Java 房间数据库。插入成功,但未找到数据,java,android,sqlite,observable,android-room,Java,Android,Sqlite,Observable,Android Room,我有一个简单的房间数据库设置,如下所示: 实体类 @Entity public class User { @PrimaryKey public int uid; @ColumnInfo(name = "first_name") public String firstName; @ColumnInfo(name = "last_name") public String lastName; public User(int uid, Stri

我有一个简单的房间数据库设置,如下所示:

实体类

@Entity
public class User {
 @PrimaryKey
 public int uid;

 @ColumnInfo(name = "first_name")
 public String firstName;

 @ColumnInfo(name = "last_name")
 public String lastName;

 public User(int uid, String firstName, String lastName){
     this.uid = uid;
     this.firstName = firstName;
     this.lastName = lastName;
 }
}
我的Dao接口:

@Dao
public interface UserDao {

 @Query("SELECT * FROM User")
 Flowable<List<User>> getAlls();

 @Insert
 Completable addData(User modelClass);
}
最后,我的ViewModel:

public class RoomWithRxJavaViewModel extends AndroidViewModel {

 private AppDatabase appDatabase;

 public RoomWithRxJavaViewModel(@NonNull Application application) {
    super(application);
    appDatabase = AppDatabase.getDatabase(application);
 }

 public Flowable<List<User>> getList() {
    return appDatabase.userDao().getAlls().subscribeOn(Schedulers.computation())
            .observeOn(AndroidSchedulers.mainThread());
 }

 public Completable addData(User modelClass) {

     return Completable.fromAction(() -> appDatabase.userDao().addData(modelClass))
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread());
 }

}
正如您从代码中看到的,我首先尝试在数据库中创建一个默认用户

如果插入成功(这是因为我总是输入onsuces函数),我想检查更新的用户表的大小,下面是提示: 无论我使用代码插入用户的频率有多高,大小始终为0

我遗漏了什么吗?

你的刀:

@Insert
Single<Long> insert(User user);

运行单元测试时,您是否观察到size=0?@Southstar否,这会有区别吗?是的,测试是事务性的-它们创建测试,完成后删除测试row@Southstar但是我不运行单元测试。我在手机上进行本地测试。
RoomWithRxJavaViewModel viewModel = new RoomWithRxJavaViewModel(this.getApplication());

Disposable disposable = viewModel.addData(new User(2, "btt", "bbb"))
.subscribe(
 () -> { //onSucess
   Toast.makeText(this, "Completed!", Toast.LENGTH_SHORT).show();
   Disposable subscribe = viewModel.getList()
   .subscribe(modelClasses ->
       {
         Toast.makeText(this, "RoomWithRx: " + modelClasses.size(), Toast.LENGTH_LONG).show();
       }, e -> Toast.makeText(this, "Error: " + e.getMessage(), Toast.LENGTH_LONG).show());
}, //onError
   throwable -> {
     Toast.makeText(this, "Error!" + throwable.getMessage(), Toast.LENGTH_SHORT).show();
  }
);
@Insert
Single<Long> insert(User user);
public Single<Long> addData2(User user) {
    return appDatabase.userDao().addData(user)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread());
}
Disposable subscribe1 = viewModel.addData2(new User(4, "some", "user"))
 .subscribe(
  id -> { //onSucess },
  throwable -> { //onerror }
);