简体   繁体   中英

Kotlin - Could not write JSON: Conflicting getter definitions for property (HttpMessageNotWritableException)

Im getting the following error while trying to output a JSON response from a controller class.

org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Conflicting getter definitions for property "product_id": com.kd.hub.core.entities.PosProduct#getProductId(0 params) vs com.kd.hub.core.entities.PosProduct#getProductName(0 params); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Conflicting getter definitions for property "product_id": com.kd.hub.core.entities.PosProduct#getProductId(0 params) vs com.kd.hub.core.entities.PosProduct#getProductName(0 params) at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal(AbstractJackson2HttpMessageConverter.java:296)

My Product.kt file

@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
);

You have a typo here:

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

Should be @JsonProperty("product_name")

You set the @JsonProperty to "product_id" on two of your strings causing there to be conflicting names. You need to change one of them. The two affected variables are

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM