【问题标题】:Spring Controller - Map JSON Attribute to foreign key EntitySpring Controller - 将 JSON 属性映射到外键实体
【发布时间】: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


【解决方案1】:

创建一个新的 DTO 对象,比如 UserDTO,作为 API 方法中的请求正文。处理 DTO 以形成用户实体,以继续进行。

【讨论】:

    猜你喜欢
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多