Одно поле не сохраняется в базе данных, всегда возвращается как 0.0 - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь сохранить сущность товара в таблице postgres, и если я отправляю запрос от почтальона, он возвращает объект sved, но поле ППМ всегда равно 0.0

Класс сущности:

package com.acms.models;

import java.time.Instant;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "product")
public class Product {
    @Id
    @Column(name = "productid")
    private String productId;
    @Column(name = "timestamp")
    private long timeStamp;
    private String description;
    private String name;
    @Column(name = "mrp")
    private double mRP;
    private int quantity;
    private double promotion;

    public Product() {
        super();
        long epochTime = Instant.now().getEpochSecond();
        this.timeStamp = epochTime;
    }

    public String getProductId() {
        return productId;
    }

    public void setProductId(String productId) {
        this.productId = productId;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getMRP() {
        return mRP;
    }

    public void setMRP(double mRP) {
        this.mRP = mRP;
    }

    public int getQuantity() {
        return quantity;
    }

    public void setQuantity(int quantity) {
        this.quantity = quantity;
    }

    public double getPromotion() {
        return promotion;
    }

    public void setPromotion(double promotion) {
        this.promotion = promotion;
    }

    @Override
    public String toString() {
        return "Product [productId=" + productId + ", timeStamp=" + timeStamp + ", description=" + description
                + ", name=" + name + ", MRP=" + mRP + ", quantity=" + quantity + ", promotion=" + promotion + "]";
    }
}

Контроллер:

@PostMapping("/product/save")
    public Product postDataToProductTable(@RequestBody Product product) {
        return this.productService.postDataToProductTable(product);
    }

Служба:

public Product postDataToProductTable(Product product) {
        return this.productRepository.save(product);
    }

Запрос отправлен с URL и объектом:

http://localhost:8080/product/save
{
    "productId":"p106",
    "description":"butter",
    "name":"amul",
    "mRP":"200",
    "quantity":"8",
    "promotion":"5.0"
}

Объект возвращен:

{
    "productId": "p106",
    "description": "butter",
    "name": "amul",
    "quantity": 8,
    "promotion": 5.0,
    "mrp": 0.0
}

обратите внимание, как указано выше, mrp возвращается как 0.0, но все остальные поля в порядке.

Таблица в postgres:

CREATE TABLE product (
    serialNumber SERIAL,
    productID VARCHAR(50) NOT NULL,
    timeStamp bigint NOT NULL,
    description VARCHAR(50),
    name VARCHAR(50) NOT NULL,
    MRP NUMERIC NOT NULL,
    quantity int NOT NULL,
    promotion NUMERIC,
    PRIMARY KEY(productID),
    UNIQUE(productID, timeStamp)
);

1 Ответ

1 голос
/ 02 мая 2020

Возможно, потому что ваш запрос JSON отправляет mRP как тип String, но в вашей модели он определен как double. Потеряйте "" вокруг значения mRP в запросе JSON и посмотрите, поможет ли это.

Другой вариант заключается в том, что вы определили этот тип как numeric в базе данных, но в модели это double. По своему опыту я предпочел бы использовать BigDecimal для сопоставления с полем numeric в postgres. Но если это должно быть double в вашей модели, то почему бы не использовать это как тип в базе данных? Не все, что может быть сохранено в поле numeric, на самом деле может быть представлено в Java double.

Postgres типах данных: https://www.postgresql.org/docs/9.1/datatype-numeric.html

Также (из обсуждения комментариев) несовместимый регистр между Json и именем поля в модели и может вызывать проблемы при использовании Spring Data JPA / Spring MVC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...