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
}