2
我有模型类别。它可能有父类别和子类别列表。我写了这个问题,因为找不到与实体相关的情况。为什么不FetchType.Lazy工作?
我想实现这样的:
@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();
}
我省像实体:
Category parent = new Category();
parent.setName("parent");
Category child1 = new Category();
child1.setName("child1");
child1.setParent(parent);
parent.getSubcategories().add(child1);
categoryPersistence.save(parent);
我希望看到这样的:
parent {
id
parent: null
childs {
child {
id
parent: ...lazy loading exception...
childs: null
}
}
}
但在儿童模特提交父母我有递归循环。 如何防止它?
是的,我也用@JsonIgnore。但我不确定这是否是好的做法。 但是,如果我有一个案件,当我需要一个类别,我真的需要发送它与UI的UI。 @JsonIgnore可以产生这个吗?
关于获取实际对象的方法,您可以在参数中使用一个布尔值,例如名为'referenced'的参数,然后在对象调用其自身时将其设置为true。然后在构建过程中,检查'if(!referenced){...'这样你就可以避免递归循环,只获取一次引用。 – ghoulfolk