【发布时间】:2020-08-16 23:24:51
【问题描述】:
我试图将产品实体保存在 postgres 表中,如果我从邮递员发送请求,它会返回 sved 对象,但 MRP 字段始终为 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)
);
【问题讨论】:
-
数据库中也是0.0吗?
-
是的,我认为它被保存为默认值,我不知道为什么它不映射到 mRP
-
我认为这是因为注释说列名
mrp(情人大小写)数据库说“MRP”大写)。 -
将@Column(name = "mrp") 更改为@Column(name = "MRP")
-
不,postgres 将所有内容都转换为小写,即使我在实体类中将 mrp 更改为 MRP,它仍然返回 0 并在数据库中输入 0。
标签: java postgresql hibernate spring-boot jpa