3

I want to use Paging 3 Library for pagination with db as SSO and I have some data classes which use Embedded annotation (one to many, relation) sample ↓

  data class PojoEmbended(
    @Embedded
    var messageEntity: MessageEntity,
    @Relation(
        parentColumn = "messageId",
        entityColumn = "messageId",
        entity = AttachmentsEntity::class
    )
    var listAttachments: List<AttachmentsEntity>
)

AttachmentsEntity looks like this↓

@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 = ""
)

Function in DAO ↓

 @Transaction
    @Query("SELECT * FROM MessageTable")
    suspend fun getAllChatMessages(): PagingSource<Int, PojoEmbended>

When I try to make a project, it fails with an Error ↓

error: Not sure how to convert a Cursor to this method's return type (androidx.paging.PagingSource<"path".PojoEmbended>). public abstract java.lang.Object getAllChatMessages(@org.jetbrains.annotations.NotNull()

Here is the question ↓
What are better to do in such situation? Get from db List make my own PagingSource and tan use it in RemoteMediator or remove Embedded annotation and use TypeConverter ?

1 Answers1

0

It can't convert to a suspended PagingSource return type. Do this instead

@Transaction
@Query("SELECT * FROM MessageTable")
fun getAllChatMessages(): PagingSource<Int, PojoEmbended>
mbmc
  • 5,024
  • 5
  • 25
  • 53