Номер и дубликаты столбцов первичного ключа - PullRequest
0 голосов
/ 03 октября 2018

Я бился головой об это последние несколько дней.У меня довольно простая установка Android Room.Вот моя сущность:

Entity(tableName = "some_table")
public class SomeClass {

    @PrimaryKey(autoGenerate = true)
    @NonNull
    int id;

    // Other member variables

    public SomeClass() {

    }

    public int getId(){
        return id;
    }

    public void setId(int id){
        this.id = id;
    }

}

Мой Дао также довольно прост:

@Dao
public interface SomeClassDao {

    @Query("SELECT * FROM some_table")
    List<SomeClass> getAll();

    @Insert(onConflict = OnConflictStrategy.REPLACE)
    void insertAll(List<SomeClass> someClass);

    @Update
    void update(SomeClass someClass);

    @Delete
    void delete(SomeClass someClass);

}

И с моей базой данных тоже ничего не происходит:

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

    public static final String DATABASE_NAME = "someApp";

    public abstract SomeClassDao getDao();

}

Я создаю свою базу данных в пределах onCreate() моего класса приложения:

public class SomeApp extends Application {

    private static SomeClassDatabase sDatabase;

    @Override public void onCreate() {
        super.onCreate();

        Stetho.initializeWithDefaults(this);

        sDatabase = Room.databaseBuilder(this, SomeClassDatabase.class, SomeClassDatabase.DATABASE_NAME).build();
    }

    public static ForecastDatabase getDatabase(){
        return sDatabase;
    }

}

Затем я вставляю данные в свою БД, используя RxJava в моей основной деятельности.Я не думаю, что эта часть будет источником проблемы.Если да, пожалуйста, дайте мне знать, и я обновлю свой пост.

Проблема, с которой я сталкиваюсь, заключается в том, что при проверке базы данных с использованием Stetho у меня есть не один, а два столбца для моего первичного ключа.Других повторяющихся столбцов нет, кроме переменной id, равной SomeClass - все остальное в порядке.Кто-нибудь знает, почему это происходит?Любое понимание этого будет с благодарностью.

1 Ответ

0 голосов
/ 03 октября 2018

Я на самом деле смог понять это сам по большей части.Проблема сводилась к использованию Stetho для просмотра моей БД.Все исследования, которые я проводил, не могли объяснить, почему у меня в базе данных были повторяющиеся столбцы, особенно для моего первичного ключа.Поэтому я проанализировал свою БД с помощью браузера SQLite и убедился, что мой столбец первичного ключа показывался только один раз.Затем я искал и нашел других, у которых были похожие проблемы со Stetho:

Stetho, показывающее два столбца с одинаковым именем

https://github.com/Raizlabs/DBFlow/issues/1436

СИмея все это в виду, я бы пришел к выводу, что моя БД была создана правильно, и это было проблемой только при использовании Stetho.

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