Cześć, mam taką zagwozdkę. Załóżmy dla uproszczenia, że mam taką encję Usera, odpowiadające mu dto zawierające dodatkowo pole mówiące czy na daną chwilę użytkownik jest wolny od tasków i repo tych tasków:

@Entity
class User {
    @GeneratedValue
    @Id
    private long id;
    private String name;
}

class UserDto {
    private long id;
    private String name;
    private boolean free;
}

interface TaskRepository extends JpaRepository<Task, Long> {
    //jakieś customowe @Query
    long countUserTasksForNow(long userId, LocalDateTime now);
}

No i w standardowy sposób, jesli chcę zwrócić listę tych UserDto to:

  1. Pobieram z UserRepository : findAll()
  2. Mapuję z user list na userDto list.
  3. dla każdego userDto na liście robię coś takiego:
userDto.setFree(taskRespository.countUserTasksForNow(userDto.getId(), LocalDateTime.now() == 0);

No i właśnie .. tutaj idzie N+1 zapytań. Da się to zrobić tak, że przy wyciąganiu userów z bazy od razu te dane dostanę ? Tylko, że nawet gdyby to nie mam jak tego zmapować bo User nie ma pola Free

Pozdrawiam