Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Java > Java Базы данных (JDBC, JPA, Hibernate)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 15.08.2019, 19:36   #1
Ти6ка
Пользователь
 
Регистрация: 22.04.2015
Сообщений: 24
Сообщение Query did not return a unique result

У моей сущности Customer есть следующее свойство:
Код:
@OneToMany(mappedBy = "customerId")
private Collection<Order> orders;
Следующим запросом я пытаюсь отсортировать customers по количеству orders и мне нужно подсчитать общий размер результата используя функцию getCount(...):
Код:
query.groupBy(customer.get(Customer_.ID));
query.orderBy(builder.desc(builder.count(customer.join(Customer_.orders))))
;
Long count = getCount(em, customer, query)
Сама функция:
Код:
private Long getCount(EntityManager entityManager, Root<?> root, CriteriaQuery<?> criteria) {
        CriteriaBuilder builder = entityManager.getCriteriaBuilder();
        CriteriaQuery<Long> countQuery = builder.createQuery(Long.class);
        countQuery.select(builder.count(root));
        for (Root<?> fromRoot : criteria.getRoots()) {
            countQuery.getRoots().add(fromRoot);
        }
        Predicate whereRestriction = criteria.getRestriction();
        if (whereRestriction != null) {
            countQuery.where(whereRestriction);
        }
        Predicate groupRestriction = criteria.getGroupRestriction();
        if (groupRestriction != null) {
            countQuery.having(groupRestriction);
        }
        countQuery.groupBy(criteria.getGroupList());
        countQuery.distinct(criteria.isDistinct());
        return entityManager.createQuery(countQuery).getSingleResult();
    }
Но получаю следующую ошибку:
Код:
javax.persistence.NonUniqueResultException: query did not return a unique result: 3
Может кто-то сталкивался с данной проблемой и знает как ее решить
Ти6ка вне форума Ответить с цитированием
Ответ
Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка adoquery commandtext does not return a result set Don1231 БД в Delphi 1 27.05.2018 20:52
ADOQuery1:CommandText does not return a result set. Александр+02 Помощь студентам 2 17.05.2016 20:34
Оператор "return" без значения. функции оператора "return" Алексей111083 Помощь студентам 1 17.01.2016 18:18
Сортировка данных, идентифицированных как UNIQUE KEY Microplankton SQL, базы данных 4 02.03.2015 17:56
ошибка CommandText does not return a result set furstenberg БД в Delphi 2 04.02.2008 18:38