android - Room TypeConverter 将多个数据库列转换为一个字段?
问题描述
有没有办法让一个 Room TypeConverter 接受多个表字段并将它们组合成某个对象?
例如,假设我有一个表 Foo ,其中包含 columns INT numerator
、INT denominator
(一起代表一个分数)和INT unit
(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)
}
}
和
data class MyScalar(val value: Fraction, val unit: MeasurementUnit)
似乎可以解决问题,但我发现让我的@Entity 具有 @TypeConverters(SomeThreeColumnConverter::class) 的想法很有吸引力,而不用担心记住调用 combine() 或类似的东西。
我不认为这是可能的,但想检查一下。
解决方案
推荐阅读
- javascript - 如何按键合并两个对象数组并将唯一键保留在单个对象数组中?
- swift - SwiftUI:在 macOS 应用程序中更改“关于视图”
- reactjs - uri 源 React-Native 未显示图像
- selenium - 使用 Python Selenium 插入文本。.send_keys() 不起作用
- django - SearchFilter:只要没有给出 ?search 输入,就返回 .none()
- python - 电子表格.get 方法不返回任何实际值,只是格式化
- python - 序列化对象运行过多的 SQL 查询
- javascript - 如何使这个“转换”按钮将文本从输入转换为二进制?
- python - 试图通过书来写外星人入侵。在尝试对项目符号进行分组时,我得到 AttributeError
- c# - Load(byte[]) 后无法删除程序集