Объединение класса @Entity ObjectBox и kotlinx.serialization приводит к конфликту - PullRequest
1 голос
/ 07 апреля 2020

Я пытаюсь передать класс данных в Bundle. Для этого необходимо, чтобы класс данных был сериализованным. Однако, как представляется, это представляет проблему, как только вы вводите аннотацию @Serializable в сочетании с аннотацией @Entity, особенно с классом данных, который имеет отношения.

@Entity
@Serializable 
data class BasketItem(
    @Id var id: Long = 0,
    var barcode: String? = null,
    var productName: String? = null,
    var taxTypeID: Int = 0,
    var tax: Int = 0,
    var retailSellingPrice: Int = 0,
    var participatedInRule: Boolean = false,
    var looseItemMeasurement: Int = 0,
    var isAReturn: Boolean = false,
    var addedTimestamp: String? = null,
    var costPrice: Int = 0)

В настоящее время я использую kotlinx.serialization. В любом случае, я могу добиться сериализации класса данных объекта box?

1 Ответ

1 голос
/ 07 апреля 2020

В том случае, если вы используете свой класс данных между двумя языками, то есть Java и Kotlin, кажется, что если вы хотите сериализовать класс данных, вам следует импортировать java версию сериализуемого. Я пытался передать данные в классе данных, чтобы передать их в класс Java, я использовал сериализацию Kotlin, и она, похоже, не работала с базой кода java. В конце концов единственным решением было импортировать следующее:

import java .io.Serializable

и расширить класс данных

@Entity
data class BasketItem(
    @Id var id: Long = 0,
    var barcode: String? = null,
    var productName: String? = null,
    var taxTypeID: Int = 0,
    var tax: Int = 0,
    var retailSellingPrice: Int = 0,
    var participatedInRule: Boolean = false,
    var looseItemMeasurement: Int = 0,
    var isAReturn: Boolean = false,
    var addedTimestamp: String? = null,
    var costPrice: Int = 0,
) : Serializable 

Это кажется сделать трюк.

...