【发布时间】:2023-01-24 23:31:53
【问题描述】:
我是 spring-data-jpa 的新手。我正在研究任务管理系统。 我有 2 个实体:
public class Task {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long taskId;
private String title;
private String description;
private Status status;
@OneToOne
@JoinColumn(name = "user_id", referencedColumnName = "userId")
private User assignee;
和:
@Entity
@Table(name = "tbl_user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long userId;
private String name;
private String email;
private Active active;
private String password;
}
我有一个创建新任务的端点:
@PostMapping
@ResponseStatus(HttpStatus.CREATED)
public TaskResponse addTask(@Valid @RequestBody Task task){
return taskService.addTask(task);
}
这是实现:
@Override
public TaskResponse addTask(Task task) {
taskRepository.save(task);
return mapToTaskResponse(task);
}
发送请求时出现的错误是:
2023-01-24 15:10:01.825 WARN 1961 --- [nio-8080-exec-4] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot construct instance of `com.tasksmanagement.entity.User` (although at least one Creator exists): no int/Int-argument constructor/factory method to deserialize from Number value (1); nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `com.tasksmanagement.entity.User` (although at least one Creator exists): no int/Int-argument constructor/factory method to deserialize from Number value (1)<EOL> at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 5, column: 17] (through reference chain: com.tasksmanagement.entity.Task["assignee"])]
我不确定我做错了什么。基本上,我创建一个用户并在请求中发送该用户的 ID(负载中的受让人字段 - 附上屏幕截图),以便将新任务分配给该用户。 任何人都可以协助并帮助我理解请求的问题是什么吗? 我应该发送其他东西而不是 userId 吗?
【问题讨论】:
-
Task是TaskRequest吗???? -
不。我用正确的方法编辑了问题
标签: spring-boot spring-data-jpa