Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate Spring DataJPA@manytone UIN+1问题_Hibernate_Spring Data Jpa - Fatal编程技术网

Hibernate Spring DataJPA@manytone UIN+1问题

Hibernate Spring DataJPA@manytone UIN+1问题,hibernate,spring-data-jpa,Hibernate,Spring Data Jpa,有一阵子没玩过Hibernate的@OneToMany和@ManytoOne了。 让我们以下面的例子为例。我们有一本桌子上的书和一本叫page的书。我只对页面内容和页面内的书籍细节感兴趣 第页: 书籍: 然后我需要使用spring数据提取所有页面 pageRepo.findAll(); 它可以工作,但我遇到了N+1问题。有N+1选择。有没有办法解决这个问题,但保持关系的单向性?您应该在Crud/Jpa存储库中创建一个查询,在那里您可以显式地使用Page和Book之间的连接 大概是这样的: pu

有一阵子没玩过Hibernate的@OneToMany和@ManytoOne了。 让我们以下面的例子为例。我们有一本桌子上的书和一本叫page的书。我只对页面内容和页面内的书籍细节感兴趣

第页:

书籍:

然后我需要使用spring数据提取所有页面

pageRepo.findAll();

它可以工作,但我遇到了N+1问题。有N+1选择。有没有办法解决这个问题,但保持关系的单向性?

您应该在Crud/Jpa存储库中创建一个查询,在那里您可以显式地使用Page和Book之间的连接

大概是这样的:

public interface PageRepository extends JpaRepository<Page, String> {
    @Query("SELECT * FROM Page p JOIN Book b ON p.book_id = b.id")
    List<Page> findAll();
}

听起来不错,但不幸的是它不起作用。同样的结果。Multumesc;通过以下查询@QuerySELECT p from Page p JOIN FETCH Book b on p.Book解决了这个问题
pageRepo.findAll();
public interface PageRepository extends JpaRepository<Page, String> {
    @Query("SELECT * FROM Page p JOIN Book b ON p.book_id = b.id")
    List<Page> findAll();
}