1

我正在尝试使用 spring JPA 存储库和实体图加载实体的惰性属性,EntityGraph 不获取动态提供的关系,而是根据实体中为该属性定义的静态获取类型获取属性。

@Repository
@Transactional
public interface SampleRepository extends JpaRepository<Sample,Long> {

    @EntityGraph(attributePaths = {"oneToOneLazyRelation1","oneToOneLazyRelation2"})
    List<Sample> findAllByCustomer(Customer customer);

}

@Entity
public class Sample {

    @id
    private Long id;

    @OneToOne(cascade = CascadeType.ALL ,fetch=FetchType.LAZY)
    @LazyToOne(value = LazyToOneOption.NO_PROXY)
    @LazyGroup("oneToOneLazyRelation1")
    private OneToOneLazyRelation1 oneToOneLazyRelation1;
    
    @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    @LazyToOne(value = LazyToOneOption.NO_PROXY)
    @LazyGroup("oneToOneLazyRelation2")
    private OneToOneLazyRelation2 oneToOneLazyRelation2;
}

使用休眠 - 5.2.17.Final , Spring - 4.3.20.RELEASE , Spring data JPA - 1.11.22.RELEASE

4

1 回答 1

0

Hibernate 用户指南指出

但是,如果您确实需要使用双向关联并希望确保始终延迟获取,那么您需要启用延迟状态初始化字节码增强功能并同时使用 @LazyToOne 注释。”

另见https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html#associations-one-to-one-bidirectional-lazy

所以上面的注解LazyToOne会导致关联总是延迟加载。

于 2021-02-24T07:23:18.037 回答