Как сделать составной ключ в комнате при использовании MVVM в android

Я только что нашел @PrimaryKey аннотацию в комнате. Итак, если я хочу создать составной ключ, так как я могу сделать это в MVVM?

Ответ 1

Используйте primaryKeys().

Документация для разработчиков Android для Room:

Если аннотация PrimaryKey используется в поле Embeddedd, все столбцы, унаследованные от этого встроенного поля, становятся составным первичным ключом (включая его большие дочерние поля).

Пример реализации:

@Entity(primaryKeys = {"column1","column2","column3"})
class DummyClass {
    ...
}

Спасибо Лалиту Кушве за пример.

Ответ 2

Вот пример

import android.arch.persistence.room.Entity

@Entity(primaryKeys= [ "first_name", "last_name" ] )
class User{
    .......
}

Ответ 3

Это сработало для меня, я использую Kotlin 1.3, я думаю.

@Entity(tableName = "location_table", primaryKeys = ["lat", "lon"])
    data class MyLocation(
    //    @PrimaryKey(autoGenerate = true) var id: Long?,
        var lat: Double,
        var lon: Double,
        var dateTime: String,
        var weatherDescription: String,
        var temperature: Double
    )