Я разрабатываю базу данных, которая будет реализована в Android с использованием Room, после прочтения документации я обнаружил, что нет никаких рекомендаций относительно использования Int или Long в качестве первичных ключей.
В некоторых местах они определяют сущности с первичными ключами int:
@Entity
data class User(
@PrimaryKey var id: Int,
var firstName: String?,
var lastName: String?
)
Но в другом месте это говорит о том, что если вы хотите получить идентификатор последней вставленной строки, метод "insert" возвращаетlong.
@Dao
interface MyDao {
@Insert(onConflict = OnConflictStrategy.REPLACE)
fun insertUsers(vararg users: User)
@Insert
fun insertBothUsers(user1: User, user2: User)
@Insert
fun insertUsersAndFriends(user: User, friends: List<User>)
}
Если метод @Insert получает только 1 параметр, он может вернуть long, который является новым rowId для вставленного элемента.Если параметр является массивом или коллекцией, он должен возвращать long [] или List.
Итак, первичные ключи в комнате должны быть Int или Long ?;Есть ли лучшие практики по выбору одного типа над другим?