Room 可以转换基元类型和盒装类型,但不允许在实体之间进行对象引用。了解如何使用类型转换器,以及 Room 为何不支持对象引用。
使用类型转换器
有时,您需要应用将自定义数据类型存储在单个数据库列中。您可以通过提供类型转换器来支持自定义类型。这些函数用于告知 Room 如何将自定义类型与 Room 可以保留的已知类型相互转换。您可以使用 @ColumnTypeConverter 注解来识别类型转换器。
假设您需要在 Room 数据库中保留 Date 的实例。Room 无法原生保留 Date 对象,因此您需要定义类型转换器:
object Converters { @ColumnTypeConverter fun fromTimestamp(value: Long?): Date? { return value?.let { Date(it) } } @ColumnTypeConverter