[英]How to have hibernate not query children?
我在我的Spring Boot Java应用程序中实现HATEOAS,在HATEOAS中要做的一件事是不返回json响应中的child对象。 相反,您具有可以获取该对象的子代的链接。
一个例子是一家公司可以有很多员工。 如果对特定公司进行GET调用,则通常的响应将是公司的JSON对象,其中包含员工列表。 我希望JSON没有该雇员集合。 从理论上讲,休眠状态下唯一必须运行的查询是company表上的select语句。
任何帮助深表感谢。
提前致谢
可以使用fetch Lazy以便不显示孩子,这是一个示例:
@OneToMany(mappedBy = "parent", fetch = FetchType.LAZY, cascade = {CascadeType.ALL})
private List<Team> teams;
查看您正在使用的类型关联的代码,
例如,在ManyToOne.class中,您会注意到FetchType fetch()行是默认的EAGER。 这意味着将急切地获取关联的实体。 同样,对于OneToMany和ManyToMany.class,默认策略是Lazy。 根据您使用的关联类型,总会有一些默认策略,但是您可以更改此策略
如果您不希望出现这种情况,则需要更改@ManyToOne(fetch = FetchType.LAZY)
当实现序列化对象然后将其发回之前,实现的杰克逊是一个额外的电话。 能够在公司对象的员工属性上使用@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
。 这样,如果需要,我可以将其保存为嵌套对象,但是在检索时,它不会获取嵌套对象(因此不会进行额外的sql调用)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.