spring data jpa findAll()无法正常工作

时间:2017-07-20 10:46:46

标签: spring spring-data

我有以下课程

@Entity
@Table(name = "USR_E_GROUPS")
public class GroupEntity {
    @Id
    @Column(name = "UIDUSERGROUP")
    @GenericGenerator(name = "generator", strategy = "uuid2")
    @GeneratedValue(generator = "generator")
    private String id;
  .........
   @OneToMany(mappedBy = "group", cascade = CascadeType.PERSIST)
   private List<UserGroupEntity> users;

同样适用于UserGroupEntity 现在,如果我使用groupRepoository.findAll() 它正在为每个Group和UserGroupEntity的不同选择查询内部激活选择查询。所以花了太多时间。 我想让它通过连接激发选择,因此它将是一个查询。

1 个答案:

答案 0 :(得分:1)

这可能是n + 1问题。

来自docs

  

默认情况下,Hibernate3对集合使用延迟选择提取   延迟代理获取单值关联。这些默认值   对大多数应用程序中的大多数关联都有意义。

默认情况下,孩子们会懒惰地抓取。使用JOIN FETCH在单个查询中获取结果。

GroupRepoository

@Query("SELECT g FROM GroupEntity g JOIN FETCH g.users gu")
List<GroupEntity> findAllEager();