Tai*_*yen 3 android android-room
我面临着Room的特定问题。我有一个对象
@Entity(tableName = "classifieds")
data class ClassifiedBean(
@PrimaryKey
@ColumnInfo(name = "id")
@SerializedName("id")
var id: String,
@Embedded
@SerializedName("client")
var clientBean: ClientBean,
@Embedded
@SerializedName("location")
var locationBean: LocationBean
)
Run Code Online (Sandbox Code Playgroud)
这里有我的对象LocationBean和ClientBean。
问题出在我的ClientBean内部,我也有一个具有相同属性(地址,postalCode,城市,国家...)的LocationBean。
data class ClientBean(
@ColumnInfo(name = "client_id")
@SerializedName("id")
var id: Int,
@ColumnInfo(name = "name")
@SerializedName("name")
var name: String,
@Embedded
@SerializedName("location")
var locationBean: LocationBean
)
Run Code Online (Sandbox Code Playgroud)
在这里您可以找到我的LocationBean
data class LocationBean (
@ColumnInfo(name = "location_id")
@SerializedName("locationId")
var id: Int,
@ColumnInfo(name = "country")
@SerializedName("country")
var country: String,
@ColumnInfo(name = "city")
@SerializedName("city")
var city: String,
@ColumnInfo(name = "address")
@SerializedName("address")
var address: String,
@ColumnInfo(name = "postal_code")
@SerializedName("postalCode")
var postalCode: String,
)
Run Code Online (Sandbox Code Playgroud)
这是我的错误:
error: Multiple fields have the same columnName: location_id. Field names: clientBean > locationBean > id, locationBean > id.
Run Code Online (Sandbox Code Playgroud)
解决方案之一是创建2个具有相同属性的不同对象,但我想知道它们是否还有其他解决方案?
谢谢您的帮助
Mur*_*ain 10
尝试使用带前缀的前缀,例如@Embedded(prefix =“ prefix_”)。希望将ClientBean类更改为以下代码可以正常工作
data class ClientBean(
@ColumnInfo(name = "client_id")
@SerializedName("id")
var id: Int,
@ColumnInfo(name = "name")
@SerializedName("name")
var name: String,
@Embedded(prefix = "client_bean_")
@SerializedName("location")
var locationBean: LocationBean
)
Run Code Online (Sandbox Code Playgroud)
由于使用@Embedded时,Room将Embedded类的字段添加为同一表中的列。因此,当嵌入式类和所有者类之间可能存在字段名称重复的可能性时,请尝试使用前缀来避免重复。添加前缀后,Room将会执行的操作将在嵌入类的列名称之前添加前缀。请参阅文档以了解更多信息
| 归档时间: |
|
| 查看次数: |
513 次 |
| 最近记录: |