【发布时间】:2021-06-25 10:35:01
【问题描述】:
我想使用 Paging 3 Library 进行分页,将 db 作为 SSO,我有一些使用嵌入式注释(一对多,关系)示例的数据类 ↓
data class PojoEmbended(
@Embedded
var messageEntity: MessageEntity,
@Relation(
parentColumn = "messageId",
entityColumn = "messageId",
entity = AttachmentsEntity::class
)
var listAttachments: List<AttachmentsEntity>
)
AttachmentsEntity 长这样↓
@Entity(
tableName = "ChatAttachments",
foreignKeys = [ForeignKey(
entity = MessageEntity::class,
parentColumns = ["messageId"],
childColumns = ["messageId"],
onDelete = ForeignKey.CASCADE
)],
primaryKeys = ["messageId"]
)
data class AttachmentsEntity(
@ColumnInfo(name = "messageId", index = true)
var messageId: String = "",
@ColumnInfo(name = "title")
var title: String = "",
@ColumnInfo(name = "imageUrl")
var imageUrl: String = "",
@ColumnInfo(name = "imageType")
var imageType: String = ""
)
DAO 中的函数 ↓
@Transaction
@Query("SELECT * FROM MessageTable")
suspend fun getAllChatMessages(): PagingSource<Int, PojoEmbended>
当我尝试制作一个项目时,它失败并显示错误↓
错误:不确定如何将 Cursor 转换为此方法的返回类型 (androidx.paging.PagingSource)。 公共抽象 java.lang.Object getAllChatMessages(@org.jetbrains.annotations.NotNull()
这是问题↓
在这种情况下怎么办更好?从数据库列表获取我自己的 PagingSource 并在 RemoteMediator 中使用它或删除 Embedded 注释并使用 TypeConverter ?
【问题讨论】:
标签: android kotlin android-room android-paging android-paging-3