diff --git a/backend/src/test/java/org/raddatz/familienarchiv/document/DocumentRepositoryTest.java b/backend/src/test/java/org/raddatz/familienarchiv/document/DocumentRepositoryTest.java index abaa9a5b..40337077 100644 --- a/backend/src/test/java/org/raddatz/familienarchiv/document/DocumentRepositoryTest.java +++ b/backend/src/test/java/org/raddatz/familienarchiv/document/DocumentRepositoryTest.java @@ -560,6 +560,31 @@ class DocumentRepositoryTest { .isLessThanOrEqualTo(2); } + @Test + void findAll_withPageable_loadsSenderWithoutNPlusOne() { + Person sender = personRepository.save(Person.builder().firstName("Maria").lastName("RaSender").build()); + Tag tag = tagRepository.save(Tag.builder().name("RaTag2").build()); + for (int i = 0; i < 5; i++) { + documentRepository.save(Document.builder() + .title("RaDoc2 " + i).originalFilename("radoc2_" + i + ".pdf") + .status(DocumentStatus.UPLOADED) + .sender(sender) + .tags(new HashSet<>(Set.of(tag))) + .build()); + } + entityManager.flush(); + entityManager.clear(); + Statistics stats = entityManagerFactory.unwrap(SessionFactory.class).getStatistics(); + stats.setStatisticsEnabled(true); + stats.clear(); + + documentRepository.findAll(PageRequest.of(0, 5, Sort.by(Sort.Direction.DESC, "updatedAt"))); + + assertThat(stats.getPrepareStatementCount()) + .as("@EntityGraph(Document.list) via findAll(Pageable) must not N+1 sender for 5 docs") + .isLessThanOrEqualTo(5); + } + // ─── seeding helpers ───────────────────────────────────────────────────── private Document uploaded(String title) {