【问题标题】:Entities and POJOs must have a usable public constructor in Kotlin实体和 POJO 必须在 Kotlin 中具有可用的公共构造函数
【发布时间】:2021-05-01 10:02:54
【问题描述】:

我正在尝试通过对列表使用 @Ignore 来创建 Room 实体,但是当我尝试构建应用程序时出现以下错误:

 Entities and POJOs must have a usable public constructor

我的代码如下所示:

@Entity(tableName = "prodotti_table")
data class Prodotto(
    @PrimaryKey(autoGenerate = false)
    var codart: String,
    var desc: String,
    var prezzo_acq: Float,
    var prezzo_vend: Float,
    @Ignore var barcode: List<Barcode>,
    var qta: Float
)

@Entity(tableName = "barcode_prodotti_table")
data class Barcode(
    @PrimaryKey
    var id: Int,
    var codart: String,
    var barcode: String,
    var qta: Float
)

我怎样才能通过在该数据类中使用@Ignore 来解决它?

【问题讨论】:

    标签: kotlin android-room


    【解决方案1】:

    你不能在构造函数中放置一个被忽略的属性,所以这样做:

    @Entity(tableName = "prodotti_table")
    data class Prodotto(
        @PrimaryKey(autoGenerate = false)
        var codart: String,
        var desc: String,
        var prezzo_acq: Float,
        var prezzo_vend: Float,
        var qta: Float
    ) {
        @Ignore var barcode: List<Barcode> = emptyList()
    }
    

    但请记住,不在数据类构造函数中的属性不会参与equalshashcodecopytoString

    【讨论】:

      猜你喜欢
      • 2021-12-25
      • 1970-01-01
      • 2020-09-03
      • 2020-08-12
      • 1970-01-01
      • 2020-10-31
      • 2018-06-24
      • 2017-11-20
      • 2019-05-21
      相关资源
      最近更新 更多