Вставка прошла успешно, но данные не найденыJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Вставка прошла успешно, но данные не найдены

Сообщение Anonymous »

Класс сущности:

Код: Выделить всё

@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
public interface UserDao {

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

@Insert
Completable addData(User modelClass);
}
База данных:

Код: Выделить всё

@Database(entities = {User.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {

private static AppDatabase instance;

static AppDatabase getDatabase(Context context) {
if (instance == null) {
instance = Room.databaseBuilder(context, AppDatabase.class, "your_db_name").createFromFile(new File("mypath")).build();
}
return instance;
}

public abstract UserDao userDao();
}
ViewModel:

Код: Выделить всё

public class RoomWithRxJavaViewModel extends AndroidViewModel {

private AppDatabase appDatabase;

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

public Flowable 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());
}

}
Действие, при котором я печатаю результаты:

Код: Выделить всё

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();
}
);
При создании пользователя по умолчанию вставка прошла успешно, поскольку я ввожу функцию onSucess. Я хочу проверить размер обновленной таблицы пользователей, но независимо от того, как часто я вставляю пользователя, размер остается равным 0. Почему?

Подробнее здесь: https://stackoverflow.com/questions/660 ... data-found
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»