我在我的控制器中:
@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));
}
在我的实体中:
@Entity(name = "OneTwo")
@Where (clause = "deleted='false'")
public class OneTwo{
@EmbeddedId
private OneTwoKey_id;
public OneTwo(OneTwoKey id) {
this._id = id;
}
@JsonProperty("oneTwo")
public void setId(OneTwoKey value) {
this._id = value;
}
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都为空,因此服务无法在数据库上执行插入操作。
当ID不止一个时,如何处理这些情况?
答案 0 :(得分:1)
您可以做的不是使用
public ResponseEntity<ServiceResponse> save(@RequestBody OneTwo model) {
你可以使用
public ResponseEntity<ServiceResponse> save(@RequestBody String model) {
现在将String转换为json并获取所有键值对,如果您拥有动态数量的变量并且想要全部捕获它们会更容易。
或者您可以使用像jsonschema2pojo这样的工具来获取json架构并生成一个pojo。在json架构中,如果设置
"additionalProperties": true
你可以捕获所有的价值。
答案 1 :(得分:1)
尝试在...
<img src={require('../images/Image4.jpg')}/>
...
类中添加setter,以便更轻松地使用JSON反序列化器:
...
var imgName = "Image4";
...
...
<img src={require('../images/' + imgName + '.jpg')}/>
...
另一种解决方案是创建DTO,使用它来接收控制器中的数据,然后将其转换为您的实体:
OneTwoKey
答案 2 :(得分:0)
您能否确定问题不是因为区分大小写?
小写列名称。您也可以对这些变量使用公共访问吗?这些是我最初的猜测,为什么有效载荷没有被正确绑定。
public class OneTwoKey implements Serializable {
@Column(name = "oneID")
public int _oneID;
@Column(name = "twoID")
public int _twoID;