gpt4 book ai didi

java - 我如何在 Room 中的对象中保留自定义对象

转载 作者:行者123 更新时间:2023-11-29 23:44:07 24 4
gpt4 key购买 nike

我有这个实体

data class Asset(
@SerializedName("id")
@Expose
@PrimaryKey
var id: String = "",

@SerializedName("asset_name")
@ColumnInfo(name="asset_name")
@Expose
var name: String = "",

@SerializedName("asset_type_name")
@ColumnInfo(name="asset_type_name")
@Expose
var typeName: String = "",

@SerializedName("status")
@Expose
var status: Int = 0,

@SerializedName("group")
@Expose
var group: Group? = null
)

“组”也是一个实体,因此在持久化 Assets 时是否可以将“组”持久化到它自己的表中(如果它尚不存在)?

或者我应该简单地使用 TypeConverters 并继续。

最佳答案

Use 可以使用外键或嵌套对象。

在您的示例中使用外键可能如下所示:

@Entity(foreignKeys = @ForeignKey(entity = Group.class,
parentColumns = "id",
childColumns = "group_id"))
data class Asset(

// ...

@ColumnInfo(name = "group_id")
var groupId: Int? = null
)

在这种情况下,您的应用程序负责根据 groupId 获取 Group,因为 Room 不允许对象引用。

嵌入对象可能如下所示:

data class Asset(

// ...

@SerializedName("group")
@Expose
@Embedded
var group: Group? = null
)

请注意,在这种情况下,Group 的字段嵌入到 Asset 的表中。

选择这两个选项中的哪一个取决于用例。尽管如此,两者都优于使用 TypeConverters

关于java - 我如何在 Room 中的对象中保留自定义对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51596581/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com