fix(reports): resolve ResultSet is closed error on list templates by eager fetching associations with transactional

This commit is contained in:
Gabriel Menezes 2026-10-31 19:36:33 -04:00
parent 57165fdbe9
commit d3243b3fb5
2 changed files with 24 additions and 6 deletions

View file

@ -56,20 +56,29 @@ public class GeneratedReportRepositoryImpl implements GeneratedReportRepository,
}
@Override
@Transactional
public Optional<GeneratedReport> findGeneratedReportById(Long id) {
return findByIdOptional(id).map(ReportEntityMapper::toDomain);
return find("select distinct r from GeneratedReportEntity r left join fetch r.organization left join fetch r.project left join fetch r.user where r.id = ?1", id)
.firstResultOptional()
.map(ReportEntityMapper::toDomain);
}
@Override
@Transactional
public List<GeneratedReport> findByOrganizationId(Long organizationId) {
return find("organization.id = ?1 order by createdAt desc", organizationId).stream()
List<GeneratedReportEntity> entities = find("select distinct r from GeneratedReportEntity r left join fetch r.organization left join fetch r.project left join fetch r.user where r.organization.id = ?1 order by r.createdAt desc", organizationId)
.list();
return entities.stream()
.map(ReportEntityMapper::toDomain)
.toList();
}
@Override
@Transactional
public List<GeneratedReport> findByUserId(Long userId) {
return find("user.id = ?1 order by createdAt desc", userId).stream()
List<GeneratedReportEntity> entities = find("select distinct r from GeneratedReportEntity r left join fetch r.organization left join fetch r.project left join fetch r.user where r.user.id = ?1 order by r.createdAt desc", userId)
.list();
return entities.stream()
.map(ReportEntityMapper::toDomain)
.toList();
}

View file

@ -56,20 +56,29 @@ public class ReportTemplateRepositoryImpl implements ReportTemplateRepository, P
}
@Override
@Transactional
public Optional<ReportTemplate> findReportTemplateById(Long id) {
return findByIdOptional(id).map(ReportEntityMapper::toDomain);
return find("select distinct t from ReportTemplateEntity t left join fetch t.sections s left join fetch s.filterCategory left join fetch t.project left join fetch t.organization left join fetch t.createdBy where t.id = ?1", id)
.firstResultOptional()
.map(ReportEntityMapper::toDomain);
}
@Override
@Transactional
public List<ReportTemplate> findByOrganizationId(Long organizationId) {
return find("organization.id = ?1 order by createdAt desc", organizationId).stream()
List<ReportTemplateEntity> entities = find("select distinct t from ReportTemplateEntity t left join fetch t.sections s left join fetch s.filterCategory left join fetch t.project left join fetch t.organization left join fetch t.createdBy where t.organization.id = ?1 order by t.createdAt desc", organizationId)
.list();
return entities.stream()
.map(ReportEntityMapper::toDomain)
.toList();
}
@Override
@Transactional
public List<ReportTemplate> findByProjectId(Long projectId) {
return find("project.id = ?1 order by createdAt desc", projectId).stream()
List<ReportTemplateEntity> entities = find("select distinct t from ReportTemplateEntity t left join fetch t.sections s left join fetch s.filterCategory left join fetch t.project left join fetch t.organization left join fetch t.createdBy where t.project.id = ?1 order by t.createdAt desc", projectId)
.list();
return entities.stream()
.map(ReportEntityMapper::toDomain)
.toList();
}