【问题标题】:Kotlin - Could not write JSON: Conflicting getter definitions for property (HttpMessageNotWritableException)Kotlin - 无法编写 JSON:属性的 getter 定义冲突 (HttpMessageNotWritableException)
【发布时间】:2019-06-21 03:47:28
【问题描述】:

尝试从控制器类输出 JSON 响应时出现以下错误。

org.springframework.http.converter.HttpMessageNotWritableException: 无法编写 JSON:属性的 getter 定义冲突 “产品 ID”: com.kd.hub.core.entities.PosProduct#getProductId(0 params) vs com.kd.hub.core.entities.PosProduct#getProductName(0 params); 嵌套异常是 com.fasterxml.jackson.databind.JsonMappingException:冲突 属性“product_id”的 getter 定义: com.kd.hub.core.entities.PosProduct#getProductId(0 params) vs com.kd.hub.core.entities.PosProduct#getProductName(0 params) 在 org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal(AbstractJackson2HttpMessageConverter.java:296)

我的 Product.kt 文件

@Entity
@Table(name = "sm_pos_product")
data class PosProduct(
        @Id @GeneratedValue(strategy = GenerationType.AUTO) @JsonProperty("product_id")  var productId  : UUID = UUID.randomUUID(),
        @Column(name = "product_name") @JsonProperty("product_id") var productName : String ?= null,
        @Column(name = "strength") @JsonProperty("strength") var strength : String? = null,
        @Column(name = "manufacturer") @JsonProperty("manufacturer") var manufacturer : String? = null,
        @Column(name = "display_name") @JsonProperty("display_name") var displayName : String? = null,

        // Stock Keeping Units
        @Column(name = "sku_identifier") @JsonProperty("sku_identifier") var skuName : String? = null,
        @Column(name = "sku_id") @JsonProperty("sku_id") var skuID : String ?= null,

        // Master Stock
        @Column(name = "sellable_stock") @JsonProperty("sellable_stock") var sellableStock : Double ?= 0.0,
        @Column(name = "returned_stock") @JsonProperty("returned_stock") var returnedStock : Double ?= 0.0,
        @Column(name = "expired_stock") @JsonProperty("expired_stock") var expiredStock : Double ?= 0.0
);

【问题讨论】:

    标签: java json kotlin


    【解决方案1】:

    这里有错别字:

    @Column(name = "product_name") @JsonProperty("product_id") var productName : String ?= null,
    

    应该是@JsonProperty("product_name")

    【讨论】:

      【解决方案2】:

      您在两个字符串上将@JsonProperty 设置为“product_id”,导致名称冲突。您需要更改其中之一。两个受影响的变量是

          @Id @GeneratedValue(strategy = GenerationType.AUTO) @JsonProperty("product_id")  var productId  : UUID = UUID.randomUUID(),
          @Column(name = "product_name") @JsonProperty("product_id") var productName : String ?= null,
      

      【讨论】:

        猜你喜欢
        • 2014-04-25
        • 2019-05-15
        • 1970-01-01
        • 2021-10-04
        • 1970-01-01
        • 2019-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多