我有一个 Room 数据库,其中 BusStops 和 Lines 之间存在多对多关系
@Entity(tableName = "BusStops")
data class BusStopEntity(
@PrimaryKey val id: Int = 0,
val name: String,
val lat: Double,
val lon: Double
)
@Entity(tableName = "Lines")
data class LineEntity(
@PrimaryKey val id: Int = 0,
val name: String
)
@Entity(primaryKeys = ["busStopId", "lineId"])
data class BusStopLineEntity(
val busStopId: Int,
val lineId: Int
)
我使用这个数据类来建立关系:
data class LineWithBusStops(
@Embedded val line: LineEntity,
@Relation(
parentColumn = "id",
entityColumn = "busStopId",
associateBy = Junction(BusStopLineEntity::class)
)
val busStops: List<BusStopEntity>
)
@Relation
但我收到了错误entityColumn = "busStopId"
在 com.local.model.BusStopEntity 中找不到子实体列
busStopId
。选项:id、name、lat、lon
如果我改为busStopId
,id
我会遇到更多错误。
有什么想法吗?
问题是实体是通过关联(中间表)引用的实体(表)中的字段/列,而不是关联/中间表中的列。
也就是说,该实体是一个BusStopEntity,它只有字段/列
id
,name
,lat
即long
没有busStopId
字段/列。busStopId
是关联/中间BusStopLineEntity表中的一列。您可能想要将
id
其用于 entityColumn@Relation
。parentColumn
您entityColumn
可以使用Junction
因此可以使用以下内容:-