Как добавить уникальные ограничения в комнате? - PullRequest
0 голосов
/ 09 апреля 2020

У меня интересная ошибка. Я использую комнату ORM в моем приложении. Индексы использовались для создания уникальных ограничений, так как, кажется, нет другого способа создать уникальные ограничения в комнате.

@Entity(
indices = [Index(value = ["name", "url"], unique = true)])
data class Playlist(
    @PrimaryKey
    var name:String,
    var url:String
)

Интересно то, что раньше он работал и перестал работать после того, как я изменил класс AppDatabase. Теперь это выглядит так:

@Database(entities = [Playlist::class, PlaylistStream::class], version = 8)
abstract class AppDatabase : RoomDatabase() {
    abstract fun playListDao(): PlaylistDAO
    abstract fun playlistStreamDao(): PlaylistStreamDAO

    companion object {
        private var INSTANCE: AppDatabase? = null

        fun getAppDataBase(context: Context): AppDatabase? {
            if (INSTANCE == null){
                synchronized(AppDatabase::class){
                    INSTANCE = Room.databaseBuilder(context.applicationContext, AppDatabase::class.java, "myDB").fallbackToDestructiveMigration().build()
                }
            }
            return INSTANCE
        }

        fun destroyDataBase(){
            INSTANCE = null
        }
    }
}

, но до этого я просто делал что-то подобное в своей деятельности:

val db = Room.databaseBuilder(
            applicationContext,
            AppDatabase::class.java, "database-name"
        ).build()

У вас есть идеи, почему это происходит и как я могу установить ограничения

...