【Kotlin/Android Studio】RoomでインサートしたIDを取得する方法!
この記事からわかること
- Android Studio/KotlinでRoomデータベースの使い方
- インサート時に自動生成するIDの値を取得する方法
index
[open]
\ アプリをリリースしました /
環境
- Android Studio:Narwhal Feature Drop
- Kotlin:2.1.10
- Room:2.7.2
- AGP:8.9.2
- Gradle:8.11.1
- Mac M1:Sequoia 15.6.1
RoomでインサートしたIDを取得する方法
RoomDataBaseでインサート時に自動生成しているIDの値を取得するにはDaoのインサートメソッドの返り値をLongにすれば取得できるようになります。
@Insert
fun insertPerson(person: Person): Long
もちろんエンティティの定義でIDがLongになっている必要があります。またPrimaryKey(autoGenerate = true)を指定することでIDをインスタンス生成時に自動生成させることも可能です。
@Entity(tableName = "person_table")
data class Person(
@PrimaryKey(autoGenerate = true)
val id: Long = 0L,
val name: String,
val age: Int,
val hobby: String
)
@Upsertでの注意点
@Upsertアノテーションを使用することでデータがあれば更新、なければ追加することができますがこの際はList<Long>と指定することで追加したIDを取得することが可能です。ただあくまでも「追加したID」を取得できるだけで、更新されたアイテムは-1が返ってくるので注意してください。
@Upsert
fun upsert(user: User): List<Long>
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。







