История изменений
Исправление 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 использовать, но это слишком сложно для программирования на лоре.