在findByCustomerId
基于该方法,而不是使用实际上会生成一个查询em.find
。它将按照的方式创建一些东西SELECT c FROM Customer c WHERE c.customerId=:customerId
。之后,它将注意到获取策略并获得所需的引用。这也在这里解释。该查询将完全按照您的指示执行操作。
如果您要急于加载引用,则需要自己按照编写查询SELECT c FROM Customer c JOIN FETCH c.orders o WHERE c.customerId=:customerId
,这将自动检索订单。
但是,customerId
实际上是实体的主键或标识符,因此,您实际上应该使用findById
or findOne
方法(取决于Spring Data JPA版本)。这将使用,EntityManager.find
后者应考虑映射信息并创建适当的查询。