use*_*450 7 android android-database android-room
有没有一种方法可以让一个 Room TypeConverter 接受多个表字段并将它们组合成某个对象?
作为示例,假设我有一个表 Foo,其中包含列INT numerator、INT denominator(共同表示分数)和INT unit(单位映射到测量单位的枚举)。我想将它们组合成MyScalar(Fraction(numerator, denominator), unit). 例如,可能取一行(1, 5, 2)(映射2到 的位置MeasurementUnit.KG)并使用 a@TypeConverter将此行转换为MyScalar(Fraction(1,5), MeasurementUnit.KG)。
现在我只是在做
data class MyEntity(
val numerator: Int,
val denominator: Int,
@TypeConverters(IntAndUnitConverter::class)
val unit: MeasurementUnit
) {
fun combine(): MyScalar {
return MyScalar(Fraction(numerator, denominator), unit)
}
}
Run Code Online (Sandbox Code Playgroud)
和
data class MyScalar(val value: Fraction, val unit: MeasurementUnit)
Run Code Online (Sandbox Code Playgroud)
似乎可以解决这个问题,但我发现这个想法很有吸引力,只需让我的 @Entity 将 @TypeConverters(SomeThreeColumnConverter::class) 放在顶部,而不用担心记住调用 merge() 或类似的东西。
我认为不可能,但想检查一下。
| 归档时间: |
|
| 查看次数: |
218 次 |
| 最近记录: |