Spring Controller - 将JSON属性映射到外键实体

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (177)

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(尽管至少存在一个Creator):没有String-argument构造函数/工厂方法从String值('1')反序列化;

我是否需要通过过滤器Language预先获取实体?是否有强制解析方法的表单?在这里正确地做到这一点的方法是什么?

提问于
用户回答回答于

在API方法中创建一个新的DTO对象Say UserDTO作为Request Body。处理DTO以形成用户实体,以进一步继续。

扫码关注云+社区

领取腾讯云代金券