Подтвердить что ты не робот

JPA count NamedQuery

как получить счет с namedquery, не получив весь список (это увеличит производительность, я думаю). Это именованный запрос, который не работает:

@NamedQuery(name = "Charakteristika.findAllCount", query = "SELECT COUNT(c) FROM Charakteristika c")

Выполнение этого:

System.out.println("a");
System.out.println(em.createNamedQuery("Charakteristika.findAllCount", Integer.class).getSingleResult().intValue());
System.out.println("b");

Вывод:

a

Хотя этот запрос работает:

@NamedQuery(name = "Charakteristika.findAll", query = "SELECT c FROM Charakteristika c")

Выполнение этого:

System.out.println("a");
System.out.println(em.createNamedQuery("Charakteristika.findAll", Charakteristika.class).getResultList().size());
System.out.println("b");

Вывод:

a
11111
b
4b9b3361

Ответ 1

Изменить код понравится;

      int count = ((Number)em.createNamedQuery("Charakteristika.findAllCount").getSingleResult()).intValue();
      System.out.println(count);

Ответ 2

Также вы можете попробовать: используйте интерфейс TypeQuery с длинным значением. В следующем примере запрос "PosicionHistorialDia.findNumberSpeeding" является числом jpa.

    @Override
    public Long findCount(String eventCode) {
         TypedQuery<Long> query = em.createNamedQuery(
            "PosicionHistorialDia.findNumberSpeeding",
            Long.class);
        query.setParameter("event", eventCode);
        return query.getSingleResult();
    }

Ответ 3

Try:

System.out.println("a");
System.out.println(em.createNamedQuery("Charakteristika.findAllCount").getSingleResult());
System.out.println("b");

И посмотрите, выводит ли он что-нибудь для вас.

В противном случае

  • попробуйте getResultList вместо getSingleResult; в противном случае то же самое.

  • попробуйте createQuery("SELECT COUNT(c) FROM Charakteristika c").getSingleResult и getResultList

  • Исследуйте различия в объявлении запросов; как указывает JB, запросы одинаковы. Поэтому попробуйте оба имени с разными формами выше.

  • Изучите, как вы строите; это часть развернутого приложения? автономные?

Что-то должно дать где-нибудь.