java - 具有多个具有相同自定义数据类型的成员的实体

标签 java android kotlin android-room

我遇到了实体类伤害

@Entity
class Damage(
        @PrimaryKey(autoGenerate = true)
        var damageId: Int,
        var position: String,
        var place: DamageItem? = null,
        var cause: DamageItem? = null
)

DamageItem 是一个常规 POJO

data class DamageItem(
var itemId: String,
var itemDesc: String)

在尝试编译此代码时,它显示一个错误

无法弄清楚如何将此字段保存到数据库中。您可以考虑为其添加类型转换器。

我想到首先使用 @Embedded param 来表示地点和原因,但发现这不是解决方案。

有办法解决这个问题吗?

最佳答案

我发现答案是官方文档本身。 只需向每个自定义数据类型添加带前缀的嵌入式注释即可

Official Doc

将我的实体类更改为

@Entity class Damage(
    @PrimaryKey(autoGenerate = true)
    var damageId: Int,
    var position: String,
    @Embedded(prefix = "place_") var place: DamageItem? = null,
    @Embedded(prefix = "cause_") var cause: DamageItem? = null)

关于java - 具有多个具有相同自定义数据类型的成员的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58952642/

相关文章:

java - ZXing on Android PDF417

java - 空点异常...不知道为什么

java - jsoup 没有从网页获取一些 html 标签

android - Marquee 在微调器 Android 中不工作

android - 在 Android 中连接丢失时重新提交表单

java - 在 Android 应用程序中调用静态方法时出现致命异常 : java. lang.NoClassDefFoundError

android - 期望属性 getter 或 setter

java - 无法确定 : com. packt.cardatabase.domain.Owner 的类型,位于表 : car, 的列 : [org. hibernate.mapping.Column(owner)]

java - 为什么使用双冒号 (::) 在 Kotlin 中上课?

kotlin - 任何 kotlin 的泛型参数都转换为通配符(?)