【发布时间】:2018-09-10 11:53:02
【问题描述】:
我在 Room 中有 1:N 关系,看起来像这样(典型的 Owner:List 关系):
class NewsFeedAndPersonItem {
@Embedded
lateinit var newsFeedItem: NewsFeedItem
@Relation(
parentColumn = "userId", entityColumn = "id"
)
var listOfPersons: List<Person> = listOf()
fun getPerson() = listOfPersons.firstOrNull()
fun getAvatar() = getPerson()?.photoSmallLink
fun isPost() = newsFeedItem.type == 2
fun NewsFeedAndPerson() {}
fun NewsFeedAndPerson(newsFeedItem: NewsFeedItem, person: List<Person>) {
this.newsFeedItem = newsFeedItem
this.listOfPersons = person
}
}
NewsfeedItem:
@Entity
@TypeConverters(NewsFeedTypeConverters::class)
class NewsFeedItem(
// Common
@PrimaryKey @Json(name = ParserConst.DEFAULT_ID) var id: Int = 0,
@Json(name = ParserConst.USER_ID) var userId: Int = 0,
@Json(name = ParserConst.CREATED_AT) var createdAt: String? = null,
@Json(name = ParserConst.NEWS_FEED_TYPE) var type: Int? = null,
)
人:
@Entity
data class Person(
@PrimaryKey var id: Int = 0,
var favourite: Boolean = false,
var online: Boolean = false,
)
到目前为止一切顺利。问题是我需要将 NewsFeed userId:String 参数更改为 userIds (List) 列表
我的问题是是否仍然可以通过@Relation 解决,或者是否有任何简单的替代方法来实现这一点。
【问题讨论】:
-
您需要一个单独的连接实体来表示关系。如果您愿意,您应该可以使用
@Relation。 -
好的,你能告诉我这个实体应该是什么样子吗?
-
Here is a join entity 加入
Customer和Category。我碰巧将它实现为static类,尽管这不是必需的。
标签: android kotlin android-room