Java @JoinColumnsor公式导致n+;1期
当我使用@JoinColumnsOrFormulas或@JoinColumns和@NamedEntityGraph(includeAllAttributes=true)时,我面临n+1查询问题 我还试图在规范中左连接实体,这也会导致n+1查询问题 实体:Java @JoinColumnsor公式导致n+;1期,java,spring-boot,spring-data-jpa,Java,Spring Boot,Spring Data Jpa,当我使用@JoinColumnsOrFormulas或@JoinColumns和@NamedEntityGraph(includeAllAttributes=true)时,我面临n+1查询问题 我还试图在规范中左连接实体,这也会导致n+1查询问题 实体: @Data @Entity @Table(name = "book") @NamedEntityGraph(name = "all", includeAllAttributes = true) public class BookEntity i
@Data
@Entity
@Table(name = "book")
@NamedEntityGraph(name = "all", includeAllAttributes = true)
public class BookEntity implements JpaEntity {
@ManyToOne(targetEntity = CustomerEntity.class)
@JoinColumnsOrFormulas({
@JoinColumnOrFormula(column = @JoinColumn(name = "customer", referencedColumnName = "number", insertable = false, updatable = false)),
@JoinColumnOrFormula(column = @JoinColumn(name = "sub_customer", referencedColumnName = "sub_number", insertable = false, updatable = false)),
@JoinColumnOrFormula(formula = @JoinFormula(value = "'2019'", referencedColumnName = "year"))
})
private CustomerEntity customerEntity;
}
存储库:
@Override
@EntityGraph(value = "all")
Page<BookEntity> findAll(Specification<BookEntity> spec, Pageable pageable);
@覆盖
@EntityGraph(value=“全部”)
页码findAll(规范规范,可分页);
我看这个问题是正确的。我看到了第一个查询的连接,因此看起来我拥有完整的实体,不需要进行n+1查询。但是在正确的查询之后,我看到了CustomerEntity的额外选择
有人能帮我避免这个案例中的n+1问题吗?我们还需要客户资源来充分理解。您在此类中是否有eager或*toOne关系?@pdem CustomerEntity与BookEntity没有关系。这是单向关系,我们还需要客户来源来充分理解。您在此类中是否有eager或*toOne关系?@pdem CustomerEntity与BookEntity没有关系。这是单向关系
@Override
@EntityGraph(value = "all")
Page<BookEntity> findAll(Specification<BookEntity> spec, Pageable pageable);