Spring Boot @RequestBody不会完全复制参数

时间:2019-06-04 12:28:25

标签: java spring spring-boot request-mapping

我有一个传递给API端点的JSON对象:

SQL> CREATE TABLE Movie (
    mvID integer,
    title varchar(40),  
    rating char (2),
    rel_date date,
    length integer,
    studio varchar(40),
    PRIMARY KEY (mvID)
);
  2    3    4    5    6    7    8    9  
Table created.

SQL> CREATE TABLE Classification (
    mvID integer,
    genre varchar (20),
    FOREIGN KEY(mvID) REFERENCES Movie(mvID)
);
  2    3    4    5  
Table created.

SQL> drop table Classification;

Table dropped.

SQL> drop table Movie;

Table dropped.

SQL> 

我有一个端点{ "ID": 12312, "location": "London", "friends": 1231, "Name": "dsd", "verified": true }

UserController

我有一个@PostMapping("saveUser") public String Save(@RequestBody(required = true) User newUser){ //TODO: User needs to have ID and all other necessary params //TODO: RequestBody is not working. Why not? userservice.saveNewUser(newUser); return "True"; } 课:

User

我的问题:插入用户时,数据库注册了正确的朋友和归档的位置,但是ID和Followers字段和名称不正确。有人知道为什么吗?wrong parameters parsed

3 个答案:

答案 0 :(得分:1)

camelCase。尝试将ID更改为id,将Name更改为name。框架假定getID会被声明为iD。

答案 1 :(得分:1)

通常,始终遵循约定总是更好。 如果您的json和Java代码均为camelCase,则无需弄乱特定于框架的配置。 尽可能避免不必要的配置。

答案 2 :(得分:0)

名称和ID都具有大写的第一个字符,可能是getter无法访问该值。你可以试试这个吗?

  @Id
  @Column(name = "ID")
  private int id;

  @Column(name = "Name")
  private String name;

仔细检查吸气剂是“ getId()”和“ getName()”