【发布时间】:2021-01-19 01:53:31
【问题描述】:
当我通过 POST 请求将数据传递给我的 TodoItem 模型时,只有@column 指定的列被填写,但@JoinColumn 列是null,即使我在 JSON 中使用列名送过来。不过,我的 GET 请求 API 工作得很好,所以我从控制器代码中省略了它们。
TodoItem.java
@Entity
@Table(name = "todo_item")
public class TodoItem {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@Column(name = "todo")
private String todo;
@Column(name = "completed")
private boolean completed;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
private User user;
public TodoItem() {
}
public TodoItem(String todo, boolean completed) {
this.todo = todo;
this.completed = completed;
}
// setters and getters
}
我的构造函数没有提到user_id,虽然不认为它需要它,但我可能错了。
TodoController.java
@RestController
@RequestMapping("/api")
public class TodoController {
@Autowired
private UserRepository userRepository;
@Autowired
private TodoRepository todoRepository;
@PostMapping("/addItem")
public TodoItem addTodoItem(@RequestBody TodoItem todoItem) {
return this.todoRepository.save(todoItem);
}
}
我将POST 发送给http://localhost:8080/api/addItem
请求:
{
"todo": "finish portfolio",
"completed": false,
"user_id": 1
}
但是在我的 MySQL 工作台中,todo 和 completed 被正确填充,但 user_id 表示 null
【问题讨论】:
标签: java mysql spring spring-boot api