在单个数据库查询中获取多行及其关联的数据

时间:2019-02-01 18:50:29

标签: spring hibernate spring-data-jpa

我有两个实体。他们具有OneToOne映射。我想在JPA的单个数据库调用中获取一个实体的所有行及其关联的详细信息。

我尝试加载EAGER。但是它在一次调用中获取了所有书行,然后一个一个地获取book_additional_details。我想在单个数据库中获取所有行及其关联的表行(例如,通过使用带有联接的sql查询)。

@Entity
@Table("book")
public class Book{
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name = "id")
  Long id;

  @Column("name")
  private String name;

  @OneToOne(fetch = FetchType.EAGER, mappedBy = "book", cascade = CascadeType.PERSIST)
  @JsonManagedReference
  private BookAdditionalDetail bookAdditionalDetail;
}





@Entity
@Table(name = "book_additional_detail")
public class BookAdditionalDetail{
  @Id
  Long id;

  @OneToOne(fetch = FetchType.EAGER)
  @JoinColumn(name = "id")
  @MapsId
  @JsonBackReference
  private Book book;

  @column("author_name")
  private String authorName;
}


bookRepo.findAll()

bookRepo.findAll()将在一个sql调用中获取所有书行,然后一对一触发sql查询以获取book_additional_details。 我希望bookRepo.findAll()在单个sql调用中获取所有这些详细信息。最好有一个不使用本机查询的解决方案(最好是通过管理注释来解决)。

0 个答案:

没有答案