Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建Post方法以保存具有多个id的对象_Java_Spring - Fatal编程技术网

Java 创建Post方法以保存具有多个id的对象

Java 创建Post方法以保存具有多个id的对象,java,spring,Java,Spring,我的控制器中有: @RestController public class OneTwoController { private OnTwoService _service; //... more code @PostMapping("/api/one-two") @CrossOrigin public ResponseEntity<ServiceResponse> save(@RequestBody OneTwo model) { return ResponseEn

我的控制器中有:

@RestController
public class OneTwoController {
    private OnTwoService _service;
//... more code
@PostMapping("/api/one-two")
@CrossOrigin
public ResponseEntity<ServiceResponse> save(@RequestBody OneTwo model) {
    return ResponseEntity.ok().body( _service.Save(model));
}
OneTwoKey类:

public class OneTwoKey implements Serializable {
    @Column(name = "OneID")
    private int _oneID;

    @Column(name = "TwoID")
    private int _twoID;

    public OneTwoKey(int oneID, int twoID) {
        this._oneID = oneID;
        this._twoID = twoID;
    }

}  
我发送给Rest API的json:

{
  "oneTwo": {
    "oneID": 83,
    "twoID": 69
  },
  "deleted": true
}
问题是两个ID都到达null,因此服务无法在DB上进行插入


当ID不止一个时,我如何处理这些情况

你能做的就是不用

公共响应权限保存(@RequestBody-OneTwo-model){

你可以用

public-ResponseEntity-save(@RequestBody-String-model){

现在,将字符串转换为json并获取所有键值对,如果您有动态数量的变量,并且希望捕获所有变量,则会更容易

或者,您可以使用whick等工具获取json模式并在json模式中生成pojo
“附加属性”:true

您可以捕获所有值。

您能确保问题不是因为区分大小写吗

列名的小写字母。你也可以对这些变量使用公共访问吗?这些是我最初猜测的负载没有被正确绑定的原因

public class OneTwoKey implements Serializable {
    @Column(name = "oneID")
    public int _oneID;

    @Column(name = "twoID")
    public int _twoID;

尝试在
onetwkey
类中添加setter,以简化JSON反序列化程序:

@JsonProperty("oneID")
public void setOneID(int oneID) {
    this._oneID = oneID;
}

@JsonProperty("twoID")
public void setTwoID(int twoID) {
    this._twoID = twoID;
}
另一种解决方案是创建DTO,使用它接收控制器中的数据,然后将其转换为实体:

public class OneTwoDTO {
    private Map<String, Int> oneTwo;
    private boolean deleted;
    // setters & getters
}
公共类OneTwoDTO{
私人地图一二;
删除私有布尔值;
//二传手和接球手
}

这不是由于case Sesictive引起的问题,但无论如何还是要感谢:)
public class OneTwoDTO {
    private Map<String, Int> oneTwo;
    private boolean deleted;
    // setters & getters
}