我正在尝试使用spring data jpa。如果我调用findById
,则fetch join正在工作。但是,如果我没有使用id条件(例如) findByMemberId
,则fetch join不起作用。
我正在尝试实体图,但是,我想使用内部fetch join。
如何使用jpa fetch join?
这是我的代码。
@Getter
@Setter
@Entity
public class Delivery {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@NotNull
private Long memberId;
@ManyToOne(fetch = FetchType.EAGER, optional = false)
@JoinColumn(name = "order_id")
private Order order;
...
...
}
@Getter
@Setter
@Entity
public class Order {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
...
...
}
DeliveryRepository.java
@Repository
public interface DeliveryRepository extends JpaRepository<Delivery, Long> {
Optional<Gift> findByMemberId(Long MemberId);
}
服务
...
deliveryRepository.findById(1L); // fetch join working
deliveryRepository.findByMemberId(1234L); // fetch join not working
...
发布于 2020-11-05 15:08:02
对于派生查询,Spring Data JPA构造了一个显式查询。因此,从注释中获取配置不适用。定义实体图并将其应用于方法应该允许您获得所需的获取策略。
有关如何做到这一点的示例,请参阅https://www.baeldung.com/spring-data-jpa-named-entity-graphs。
https://stackoverflow.com/questions/64690497
复制相似问题