개발/Android
Android Room Date Type에 대한 에러
지산동고라니
2023. 6. 9. 15:40
D:\wookhyun\android\compose\udemy\JetNoteApp\app\build\tmp\kapt3\stubs\debug\com\example\jetnoteapp\model\Note.java:19: error: Cannot figure out how to save this field into database. You can consider adding a type converter for it.
private final java.util.Date date = null;
Room 데이터베이스를 공부하면서 위 에러를 볼 수 있었다. 안드로이드에서 활용할 수 있는 DB인 SQLite는 date 타입이 존재하지 않는다 따라서 어떻게 저장해야 할지 모르는 SQLite는 에러를 내뱉은 것이다.
이를 위해서 TypeConverter를 추가하면 Entitiy 변경 없이 활용할 수 있다
1.Converter 클래스를 생성한다.
package com.example.jetnoteapp.data
import androidx.room.TypeConverter
import java.util.Date
class Converters {
@TypeConverter
fun fromTimestamp(value: Long?): Date? {
return value?.let { Date(it) }
}
@TypeConverter
fun toTimestamp(value: Date?): Long? {
return value?.let { value.time }
}
}
2. TypeConverters 어노테이션과 함께 클래스를 지정해준다
@Database(entities = [Note::class], version = 1, exportSchema = false)
@TypeConverters(Converters::class) // <<-- add this line
abstract class NoteDatabase : RoomDatabase() {
abstract fun noteDao(): NoteDatabaseDao
}