【发布时间】:2018-11-19 10:05:57
【问题描述】:
UserController.java
@RestController
@RequestMapping("/users")
public class UserController {
// code
@PostMapping("/sign-up")
public void signUp(@RequestBody User user) {
//code
}
}
User
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id")
private long id;
@ManyToOne
@JoinColumn(name = "language_id")
private Language language;
// others
public User() {
}
}
所以,如您所见,Language 是一个独立的实体。但我希望能够发送以下JSON 结构
{
"foreName" : "bla",
"sureName" : "blo",
"language" : "1"
}
但我收到以下错误
无法构造
entity.db.user.Language的实例(尽管在 至少存在一个创建者):没有字符串参数构造函数/工厂 从字符串值('1')反序列化的方法;
我是否需要通过过滤器预先获取Language 实体?是否有强制解析方法的形式?在这里正确执行的方法是什么?
【问题讨论】:
-
创建一个新的 DTO 对象作为请求正文。处理 DTO 以形成用户实体,以进一步进行。
-
@PrakashAyappan Gosh 为什么我没有想到 :) 添加一个我会接受的答案
-
这发生在开发者的生活中!
-
我遇到了同样的问题,请您帮我详细说明一下。
标签: java json spring spring-boot jpa