Не могу понять, как сохранить это поле в базе данных. Вы можете рассмотреть возможность добавления конвертера типов для него? - PullRequest
0 голосов
/ 13 апреля 2020

У меня очень глубоко вложенные данные -


class ChatResponseModel : ArrayList<ChatResponseModel.ChatModelItem>() {

    data class ChatModelItem(
        @SerializedName("created")
        val created: String,
        @SerializedName("groupId")
        val groupId: String,
        @SerializedName("groupType")
        val groupType: GroupType,
        @SerializedName("joinedAt")
        val joinedAt: String,
        @SerializedName("name")
        val name: String,
        @SerializedName("unreadMessages")
        val unreadMessages: List<MessageLogicModel>,
        @SerializedName("userGroupRole")
        val userGroupRole: GroupRole,
        @SerializedName("userId")
        val userId: String
    )

    data class MessageLogicModel(val id: String, val groupId: String, val senderUsername: String, val content: String, val messageType: MessageType, val created: Date)

    enum class GroupType(val value: Int) {
        Single(0), Multiple(1), BusinessChannel(2)
    }

    enum class GroupRole(val value: Int) {
        Reader(0), Writer(1), Editor(2), Admin(3)
    }

    enum class MessageType(val value: Int) {
        Text(0),
        Media(1),
        Link(2),
        Location(3),
    }

}

И при попытке запустить мое приложение я получаю следующую известную ошибку -

error: Cannot figure out how to save this field into database. You can consider adding a type converter for it.
        private final com.example.twoverte.chats.model.ChatResponseModel.GroupType groupType = null;
                                                                                   ^D:\Developer\TwoVerte\app\build\tmp\kapt3\stubs\debug\com\example\twoverte\chats\model\ChatResponseModel.java:91: error: Cannot figure out how to save this field into database. You can consider adding a type converter for it.
        private final java.util.List<com.example.twoverte.chats.model.ChatResponseModel.MessageLogicModel> unreadMessages = null;
                                                                                                           ^D:\Developer\TwoVerte\app\build\tmp\kapt3\stubs\debug\com\example\twoverte\chats\model\ChatResponseModel.java:94: error: Cannot figure out how to save this field into database. You can consider adding a type converter for it.
        private final com.example.twoverte.chats.model.ChatResponseModel.GroupRole userGroupRole = null;

Вот мой класс сущности -

@Entity(tableName = Constants.chatsTableName)
class ChatsEntity (
    @PrimaryKey(autoGenerate = true) val id: Int,
    @Embedded val model : ChatResponseModel
)

Я знаю, что должен создать конвертеры для этого большого класса, но я пробовал много учебных пособий на этом сайте, и ничего не работает.

Надеюсь, кто-нибудь поможет мне с этим.

Спасибо

...