N + 1 Проблема все еще существует, хотя вызов вызова как ленивый Spring Boot, Hibernate - PullRequest
0 голосов
/ 15 апреля 2020

Я новый и на данный момент создал 2 сущности Я установил отношения onetomany - manytoone, но когда я пытаюсь увидеть запросы sql, запущенные hibernate, он делает несколько запросов для отношения manytoone. Ниже приведен фрагмент кода, который я пробовал.

@Entity
@Data
@NoArgsConstructor
@Table(name = "claim")
@AllArgsConstructor
public class Claim {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;

  private String name;

  @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
  @JoinColumn(name = "claim_id", nullable = false)
  private List<Item> items;

}



@Data
@Entity
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "items")
public class Item {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  private Long id;

  @JsonIgnore
  @ManyToOne(fetch = FetchType.EAGER)
  @JoinColumn(name = "claim_id", insertable = false, updatable = false)
  private Claim claim;

  private String name;
}

@Repository
public interface ClaimSqlRepository extends PagingAndSortingRepository<Claim, Long>, JpaSpecificationExecutor<Claim> {
}

@RequestMapping("/claims")
  @ResponseBody
  public Page<Claim> getClaims(
      Pageable pageable
  ) {
 Page<Claim> page = ClaimSqlRepository.findAll(pageable);
}

После получения запроса GET и проверки терминала выполняются несколько запросов для элемента. Я уже видел довольно много постов, но все еще не смог найти проблему. Мой репозиторий реализует PagingAndSortingRepository и JpaSpecificationExecutor. Я делаю находкуВсе звоню по тому же. Ниже аналогично тому, что я видел в sql -шоу для Hibernate.

Hibernate: select claim0_.id as id1_0_ from claims claim0_ where 1=1 limit ?

Hibernate: select items0_.claim_id as clai4_1_0_, items0_.id as id1_1_0_ from items items0_ where items0_.claim_id=?

Hibernate: select items0_.claim_id as clai4_1_0_, items0_.id as id1_1_0_ from items items0_ where items0_.claim_id=?

Hibernate: select items0_.claim_id as clai4_1_0_, items0_.id as id1_1_0_ from items items0_ where items0_.claim_id=?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...