это мой первый вопрос здесь.
Я создаю приложение, используя базу данных Room, и я попытался следовать этому руководству, потому что мне нужно реализовать отношение «многие ко многим».
Тем не менее, я продолжаю получать следующую ошибку, как только я пытаюсь построить приложение:
ошибка: есть проблема с запросом: [SQLITE_ERROR] SQL ошибка или отсутствует база данных (нет такой таблицы: OwnerDogCrossRef) частный конечный java .util.List dogs = null;
Мои сущности с классом данных перекрестных ссылок:
@Entity(tableName = "owner_table")
data class Owner(
@ColumnInfo(name = "owner_id")
val id: String,
@PrimaryKey
@ColumnInfo(name = "owner_name", index = true)
val name: String,
// some other columns
@Entity(tableName = "dog_table")
data class Dog(
@PrimaryKey
@ColumnInfo(name = "dog_name")
val name: String
// some other columns
@Entity(primaryKeys = ["owner_name", "dog_name"])//, "move_learned_by"])
data class OwnerDogCrossRef(
val owner_name: String,
@ColumnInfo(index = true)
val dog_name: String
// some other columns
Мой класс данных соединения:
data class OwnerWithDogs(
@Embedded val owner: Owner,
@Relation(
parentColumn = "owner_name",
entityColumn = "dog_name",
associateBy = Junction(OwnerDogCrossRef::class)
)
val dogs: List<Dog>
)
Мой DAO:
@Dao
inteface OwnerDao {
@Transaction
@Query("SELECT * FROM owner_table WHERE owner_name = :name")
fun getOwnerWithDogs(name: String): LiveData<List<OwnerWithDogs>>
}
Я также добавил OwnerDogCrossRef в свою базу данных, как показано ниже:
@Database(
entities = [Owner::class, Dog::class, OwnerDogCrossRef::class],
version = 2,
exportSchema = false
)
@TypeConverters(Converters::class)
abstract class MainDatabase : RoomDatabase() {
//some logic
}
Спасибо за ваше помощь