spring-data-jpa Sping Boot Data / JPA -使用左连接执行查询

p8ekf7hl  于 2022-11-10  发布在  Spring
关注(0)|答案(1)|浏览(312)

我试图了解如何避免从关系@OneToMany中获取数据的许多查询。从性能的Angular 来看,左连接两个表要快得多。

@Table(name = "company")
public class Company
{
    @Id
    @Column(name = "id")
    private Long id;

    @Column(name = "name")
    private String name;

    @OneToMany(mappedBy = "company", fetch = FetchType.EAGER)
    private List<Employee> employees = new ArrayList<>();

    ...
}

@Table(name = "employee")
public class Employee
{
    @Id    
    @Column(name = "id")
    private Long id;

    @ManyToOne(optional = false)
    @JoinColumn(name = "id", nullable = false)
    private Company company;

    @Column(name = "name")
    private String name;

    ...
}

从公司实体提取数据将创建

  • 1从COMPANY表中获取数据的查询
  • 从EMPLOYEE表中提取每个雇员的数据的多个查询

我读到:

  • 使用条件API可以强制使用JOIN
  • 使用Hibernate注解@Fetch(FetchMode.JOIN)

有没有其他方法可以保留Spring Data层?

odopli94

odopli941#

您可以在实体类和存储库上分别使用@NamedEntityGraph@EntityGraph注解来指导JpaRepository查询策略。

相关问题