1

我是spring boot的新手,提前谢谢你。我面临一个问题:我想在控制器中接收两种类型的对象,使用@ResponseBody,然后保存它们。

我有两个模型

public class Person {
    int a;
    int b;
    int c;
}

public class Human {
    int a;
    int b;
    int c
}

通过做这样的事情:

@PostMapping(value="/save")
public void savePerson(@RequestBody Person person,  @RequestBody Human human) {
    personRepo.save(person);
    humanRepo.save(human);          
}

我想在同一个请求中拯救人和人类。如何做到这一点?

4

2 回答 2

1

人和人是同一个“实体”吗?我的意思是帖子请求中的值是否相同?

如果是,我会从参数中删除 Human 并基于 Person 创建它

@PostMapping(value="/save")
public void savePerson(@RequestBody Person person) {
      
        Human human = mapPersonToHuman(); 
        personRepo.save(person);
        humanRepo.save(human);          
}

否则,如果人和人是两个不同的事物,我将创建一个新的包装器对象,以便您可以使用两个实体发送新消息。

public class PersonHumanWrapper{
    Person person;
    Human human;
}
于 2021-09-23T05:48:54.367 回答
0

你可以做的是:创建一个包含这两个对象的对象:

public class PersonAndHuman {

    private Person person;
    private Human human;

    // getters and setters...
}

你的控制器应该收到这个对象:

@PostMapping(value="/save")
public void savePerson(@RequestBody PersonAndHuman personAndHuman) {
    personRepo.save(personAndHuman.getPerson());
    humanRepo.save(personAndHuman.getHuman());          
}

现在,如果您使用 JSON 来发布帖子,请执行以下操作:

{
   "human" : {
       //body here
   },
   "person": {
       //body here
   }
}
于 2021-09-23T11:19:32.077 回答