나는이 User모델과 TodoItem모델 TodoItem모델이에 기본 키가 UserA를 모델 user_id@JoinColumn을. 내 문제는 getUsers항목을 추가 한 후 API 에서받는 응답 입니다. 반복해서 반복되는 매우 긴 중첩 JSON을 생성합니다. 기본 키 케이스를 제대로 처리하지 않는 것 같습니다.
TodoController.java
@RestController
@RequestMapping("/api")
public class TodoController {
@Autowired
private TodoRepository todoRepository;
@PostMapping("/addItem")
public TodoItem addTodoItem(@RequestBody TodoItem todoItem) {
return todoRepository.save(todoItem);
}
User.java
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(name = "name")
private String name;
@Column(name = "password")
private String password;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "user")
private List<TodoItem> todos;
public User() {
}
public User(String name, String password, List<TodoItem> todos) {
this.name = name;
this.password = password;
this.todos = todos;
}
// setter and getters
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
항목 요청 추가
{
"todo": "blahblah",
"completed": false,
"user": {
"id": 6
}
}
항목 응답 추가
{
"id": 26,
"todo": "blahblah",
"completed": false,
"user": {
"id": 6,
"name": null,
"password": null,
"todos": null
}
}
그래서 이미 응답이 제공되는 방식이 마음에 들지 않습니다. ID가 6 인 사용자가있을 때 이름, 패스 및 todos null 인 이유는 무엇입니까? 또한 방금 todoitem을 전달 했으므로 왜 todo null입니다. 데이터베이스가 제대로 채워지고 응답이 잘못된 것 같습니다. 그리고 저는 이것이 제가 여기있는 주요 문제와 관련이 있다고 생각합니다. 이것은 사용자에게 항목을 추가 한 후입니다.
사용자 응답 받기
[
{
"id": 6,
"name": "joe",
"password": "pass",
"todos": [
{
"id": 26,
"todo": "blahblah",
"completed": false,
"user": {
"id": 6,
"name": "joe",
"password": "pass",
"todos": [
{
"id": 26,
"todo": "blahblah",
"completed": false,
"user": {
"id": 6,
"name": "joe",
"password": "pass",
"todos": [
{
"id": 26,
"todo": "blahblah",
"completed": false,
"user": {
"id": 6,
"name": "joe",
"password": "pass",
"todos": [
{
"id": 26,
"todo": "blahblah",
"completed": false,
"user": {
"id": 6,
"name": "joe",
"password": "pass",
"todos": [
{
"id": 26,
"todo": "blahblah",
그리고 말 그대로 수천 줄에 대해 그렇게 계속됩니다. 응답이 미쳤더라도 데이터베이스가 제대로 업데이트되지만이 문제로 인해 API 호출에 시간이 걸릴 수 있습니다.