Group對Equipment是一對多關係,若是使用SpringData的簡捷接口JpaSpecificationExecutor findAll發起查詢,就會查詢group表一次,equipment表屢次,根據groupId。這就是傳說中的1+N性能問題,若是group下equipment不少,就會引起當先查詢線程的棧溢出。由此能夠須要注意,配置對象配置了單向/雙向一對多,就可能發生此問題,須要避免使用這類間接接口。html
使用hibernate/JPA的關係時,須要仔細思考一下查詢的時候會生成的SQL。hibernate/jpa當然爲咱們省去了表和對象的映射,但要思考他的處理方式。java
@Data @Entity @Table(name = "t_group") public class Group extends XbootBaseEntity { @ApiModelProperty(value = "組名") private String name; @ApiModelProperty(value = "備註") private String remark; @ApiModelProperty(value = "所屬項目") private String projectId; // @ManyToOne // private Project project; @OneToMany(mappedBy = "group", cascade = CascadeType.ALL, orphanRemoval = true) private Set<Equipment> equipments; }