用户 Controller .java
@RestController
@RequestMapping("/users")
public class UserController {
// code
@PostMapping("/sign-up")
public void signUp(@RequestBody User user) {
//code
}
}
用户
@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() {
}
}
因此,如您所见,语言
是一个独立的实体。但我希望能够发送以下 JSON
结构
{
"foreName" : "bla",
"sureName" : "blo",
"language" : "1"
}
但是我收到以下错误
Cannot construct instance of
entity.db.user.Language
(although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('1');
我是否需要通过过滤器来预先获取 Language
实体?是否有强制解析方法的形式?在这里正确执行的方法是什么?
最佳答案
创建一个新的 DTO 对象,比如 UserDTO,作为 API 方法中的请求主体。处理 DTO 以形成用户实体,以进一步进行。
关于java - Spring Controller - 将 JSON 属性映射到外键实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50775990/