Сбой приложения при использовании метода с аннотацией @Query - PullRequest
0 голосов
/ 13 марта 2019

Итак, я создаю приложение для Android, которое хранит данные в локальной базе данных с помощью Room Persistance, извлекает их в список и отображает их в текстовом представлении.

Вот модель комнаты:

@Entity
public class RecipeModel {

@NonNull
@PrimaryKey
private String recipe_id;

private String publisher;

private String f2f_url;

private String title;

private String source_url;

private String image_url;

private Float social_rank;

private String publisher_url;

public RecipeModel(){

}

public RecipeModel(@NonNull String recipe_id, String publisher, String f2f_url, String title, String source_url, String image_url, Float social_rank, String publisher_url) {
    this.recipe_id = recipe_id;
    this.publisher = publisher;
    this.f2f_url = f2f_url;
    this.title = title;
    this.source_url = source_url;
    this.image_url = image_url;
    this.social_rank = social_rank;
    this.publisher_url = publisher_url;
}
}

Также определены функции get и set, но для целей я не буду их показывать.

Вот DAO:

@Dao
public interface DaoAccess {

@Insert
void insertOnlySingleRecipe (RecipeModel recipe);
@Insert(onConflict = REPLACE)
void insertMultipleRecipes (List<RecipeModel> recipes);
@Update
void updateRecipe (RecipeModel recipe);
@Delete
void deleteRecipe (RecipeModel recipe);
@Query("SELECT * FROM RecipeModel")
LiveData<List<RecipeModel>> getAllRecipes();

}

А здесьбаза данных:

@Database(entities = {RecipeModel.class}, version = 1, exportSchema = false)
public abstract class RecipeDatabase extends RoomDatabase {

public abstract DaoAccess daoAccess();


}

И, наконец, действие:

public class FavoritesActivity extends AppCompatActivity {

private static final String DATABASE_NAME="recipes_db";
private RecipeDatabase recipeDatabase;
private List<RecipeModel> recipeModelList;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_favorites);

    recipeDatabase= Room.databaseBuilder(getApplicationContext(), RecipeDatabase.class, DATABASE_NAME)
            .fallbackToDestructiveMigration()
            .build();
    String text="";

    recipeModelList=getRecipes().getValue();


    for(RecipeModel recipeModel :recipeModelList){
        text+=recipeModel.getTitle()+" ";
    }

    TextView textView=(TextView) findViewById(R.id.textViewFavoritesList);
    textView.setText(text);
}

public LiveData<List<RecipeModel>> getRecipes() {
    return recipeDatabase.daoAccess().getAllRecipes();
}
}

Однако, когда я запускаю приложение и открываю действие, приложение вылетает.У меня есть некоторые данные, вставленные в базу данных, но она дает сбой.Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...