LINUX.ORG.RU

История изменений

Исправление Aber, (текущая версия) :

Получается List<List<?>>

Должен был получиться List<Object[]>, потому код мог бы быть таким:

public interface OrganizationRepository extends JpaRepository<Organization, Long> {
    @Query("SELECT o, COUNT(sv) " +
           "FROM Organization o " +
           "LEFT JOIN o.videos v " +
           "LEFT JOIN v.shownVideos sv " +
           "GROUP BY o " +
           "ORDER BY o.title")
    public List<Object[]> organizationToVideoShowCounts();

    public default List<OrganizationCount> getOrganizationCount() {
        List<OrganizationCount> result = new ArrayList<>();
        for (Object[] item: this.organizationToVideoShowCounts()) {
            result.add(new OrganizationCount(item[0], item[1]));
        }
        return result;
    }
}

Правда тогда работа коллекцией становится не lazy, хибернет ведь возвращает свою коллекцию с записями которые будут подружатся по мере итерирования, чтоб сделать lazy можно stream использовать, но это слишком сложно для программирования на лоре.

Исходная версия Aber, :

Получается List<List<?>>

Должен был получится List<Object[]>, потому код мог бы быть таким:

public interface OrganizationRepository extends JpaRepository<Organization, Long> {
    @Query("SELECT o, COUNT(sv) " +
           "FROM Organization o " +
           "LEFT JOIN o.videos v " +
           "LEFT JOIN v.shownVideos sv " +
           "GROUP BY o " +
           "ORDER BY o.title")
    public List<Object[]> organizationToVideoShowCounts();

    public default List<OrganizationCount> getOrganizationCount() {
        List<OrganizationCount> result = new ArrayList<>();
        for (Object[] item: this.organizationToVideoShowCounts()) {
            result.add(new OrganizationCount(item[0], item[1]));
        }
        return result;
    }
}

Правда тогда работа коллекцией становится не lazy, хибернет ведь возвращает свою коллекцию с запясями которые будут подружатся по мере итерирования, чтоб сделать lazy можно stream использовать, но это слишком сложно для программирования на лоре.