![](/img/trans.png)
[英]Why am I receiving a "Request method 'POST' not supported" ? I get error code 405 on postman
[英]Why am I receiving null from postman request in my controller?
我已經編寫了一個rest控制器,該控制器接收一個請求並將數據保存在db中。 這是我嘗試使用郵遞員發送的發帖請求 。
{
"product_id" : "testproduct",
"default_concurrent":10,
"default_connections":1000,
"msan":10
}
我的實體課:
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.NotBlank;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
@Entity
@Table(name="products")
@EntityListeners(AuditingEntityListener.class)
public class Product {
@Id
@Column(name="product_id", nullable = false)
private String product_id;
@Column(name="default_concurrent", nullable = true)
private int default_concurrent;
@Column(name="default_connections", nullable = true)
private int default_connections;
@Column(name="msan", nullable = true)
private int msan;
public String getProduct() {
return product_id;
}
public void setProduct(String product) {
this.product_id = product;
}
public int getDefault_concurrent() {
return default_concurrent;
}
public void setDefault_concurrent(int default_concurrent) {
this.default_concurrent = default_concurrent;
}
public int getDefault_connections() {
return default_connections;
}
public void setDefault_connections(int default_connections) {
this.default_connections = default_connections;
}
public int getMsan() {
return msan;
}
public void setMsan(int msan) {
this.msan = msan;
}
}
我的控制器:
@PostMapping("/add")
public Product addProduct(@Valid @RequestBody Product product)
{
return productDao.saveProduct(product);
}
錯誤:
ids for this class must be manually assigned before calling save()
nested exception is org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save(): com.test.model.Product",
我在SO上瀏覽了很多與此錯誤有關的帖子,其中大多數建議使用
@GeneratedValue(strategy = GenerationType.AUTO)或@GeneratedValue(strategy = GenerationType.IDENTITY)
但我無法使用它,因為我的主鍵將是字符串,因此無法將其更改為Long。
調試時,我可以看到在請求正文中我收到的product_id為null。 其余屬性具有正確的值。
但是,如果我在數據庫中又創建了一個列作為“ Id”,並相應地更新Entity類,使“ Id”作為主鍵並嘗試執行,那么我將在請求正文中獲取正確的值,並將其保存為DB好。
需要幫忙。
因為我們將下划線字符視為保留字符,所以我們強烈建議您遵循以下標准Java命名約定(即,在屬性名稱中不使用下划線,而使用駝峰大小寫)。
下划線_是Spring Data查詢派生中的保留字符 ,有可能允許手動描述屬性路徑。
堅持使用Java命名約定,即使用駝峰式大小寫作為成員變量名稱,一切都會按預期進行。
使用JPA功能時,您還將遇到問題。 因此,我建議更改命名約定。 更改
private String product_id;
private int default_concurrent;
private int default_connections;
private int msan;
至,
private String productId;
private int defaultConcurrent;
private int defaultConnections;
private int msan;
UPDATE1
為什么對於product_id僅為null
要發現我已經在IDE中粘貼了相同的代碼,並發現Entity Product缺少字段product_id的獲取方法 。 添加后,相同的代碼會將值保存到數據庫。 但我仍然建議大家避免在字段名稱中使用_以避免進一步的問題並按照文檔的命名約定進行操作。 當使用JPA,如findBy(用的東西在_名的實體),你可能會面臨類似的問題這
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.