You can make a convert to each enum, like this:
class Converters {
@TypeConverter
fun toHealth(value: String) = enumValueOf<Health>(value)
@TypeConverter
fun fromHealth(value: Health) = value.name
}
Or if you prefer store it as SQL integer
, you can use ordinal too:
class Converters {
@TypeConverter
fun toHealth(value: Int) = enumValues<Health>()[value]
@TypeConverter
fun fromHealth(value: Health) = value.ordinal
}
Unfortunatally, there is no way to use generics Enum<T>
to accomplish this since unbound generics will raise an error Cannot use unbound generics in Type Converters
.
Android Room team could seriously add an annotation and a generator for Enums to their kapt compiler.
Finally, annotate a database class, entity class, dao class, dao method, dao method parameter or entity field class with this:
@TypeConverters(Converters::class)