모델 카테고리가 있습니다. 상위 카테고리 및 하위 카테고리 목록이있을 수 있습니다. 엔티티가 자신과 관련이있는 경우를 찾을 수 없기 때문에이 질문을 썼습니다.FetchType.Lazy가 작동하지 않는 이유는 무엇입니까?
parent {
id
parent: null
childs {
child {
id
parent: ...lazy loading exception...
childs: null
}
}
}
그러나에 아동 모델 : 나는 같은 것을 볼 것으로 예상
Category parent = new Category();
parent.setName("parent");
Category child1 = new Category();
child1.setName("child1");
child1.setParent(parent);
parent.getSubcategories().add(child1);
categoryPersistence.save(parent);
:
@Entity
public class Category {
@Id
private String id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "parent_id")
private Category parent;
@OneToMany(mappedBy = "parent", fetch = FetchType.EAGER, cascade = CascadeType.PERSIST)
private List<Category> subcategories = Lists.newArrayList();
}
내가 좋아하는 엔티티를 저장합니다
나는 이런 식으로 구현하려고 제출 한 부모 나는 재귀 루프 있습니다. 어떻게 방지 할 수 있습니까?그래, 나는 또한 @JsonIgnore를 사용했다. 그러나 나는 그것이 좋은 연습인지 확신하지 못했습니다. 하지만 하나의 카테고리가 필요할 때 부모에게 UI로 보내야 할 경우가 있습니다. @JsonIgnore가 이것을 만들 수 있습니까?
실제 개체를 가져 오는 메서드에서 매개 변수에 'referenced'라는 부울 값을 가질 수 있습니다.이 부울 값은 개체가 자체를 호출하면 true로 설정됩니다. 그런 다음 생성하는 동안'if (! referenced) {... '를 체크하면 재귀 루프를 피할 수 있고 한번만 참조를 얻을 수 있습니다. – ghoulfolk