1

我正在使用Spring Data + Hibernate,并且有一个包含多个@ManyToOne字段的实体。每个字段都由 hibernate 使用单独的选择查询检索。

我已经尝试过@Fetch(value = FetchMode.JOIN),但没有用,

例子:

 @Entity
 public class MyEntity{
    @Id
    private Long id;

    @JoinColumn(name = "A")
    @Fetch(value = FetchMode.JOIN)
    @ManyToOne
    private A a;

    @ManyToOne
    @Fetch(value = FetchMode.JOIN)
    @JoinColumn(name = "B")
    private B b;
}

Hibernate 将为MyEntityAB执行 3 db trips 。

有没有办法通过单选来检索我的实体及其所有字段,其中AB连接。?

编辑:

实体 A 和 B 定义如下:

@Entity
public class A{
    @Id
    Long id;
    String name;
}

存储库看起来像这样(Spring Data 创建实现):

public interface MyEntityRepository extends CrudRepository<MyEntity , Long> {}

加载实体的代码也很简单:

myEntityRepository.findAll();

编辑2:

我刚刚编写了 QueryDSL 查询,并且只执行了 1 次选择。至少我对此很满意。

4

0 回答 0