Получить счет из запроса

Я использую mysql 5.5 с openjpa 2.3.0.

У меня есть сущности с namedQueries (сгенерированные в NetBeans - я хотел бы иметь возможность использовать это), например:

@NamedQuery(name = "User.findAll", query = "SELECT u FROM User u")
@NamedQuery(name = "User.findByGender", query = "SELECT u FROM User u WHERE u.gender = :gender")

Я создаю перезаполненное приложение с постраничными результатами. Я хотел бы вернуться за каждый постраничный результат Content-Range заголовок как 1-20/250 где 20 - размер страницы, общее количество 250

Я пытался создать запрос

entityManager.createNativeQuery("SELECT count(1) FROM (" + namedQuery.toString() + ") as foo;");

где я мог бы динамически вставить любой именованный запрос и вернуть счетчик, не возвращая список результатов -> это должно быть быстрее.

Когда я выполняю это, возникает исключение

SQL state 42S22: Unknown column 'u' in 'field list'

Выполнение самого запроса в entitymanager в порядке. Могу ли я использовать менеджер сущностей или построитель критериев, чтобы создать запрос для подсчета результатов, не возвращая список результатов (и не записывая для каждого namedQuery дубликат подсчета)? Спасибо за помощь.

1 ответ

Вы смешиваете JPQL с нативными запросами. JPQL говорит SELECT u ОТ сущности u, SQL будет SELECT * FROM сущностью u или SELECT col1,col2,col3 ОТ сущности u

Вы могли бы написать именованный запрос JPQL, считая материал, например, SELECT COUNT(u) FROM entity u. Затем getSingleResult() возвращает Object[], первый элемент которого содержит счетчик.

Не хорошо, но работает. Почему вы все равно должны запросить номер? Пагинация означает следующее = lastindex+ размер страницы. если следующий

Другие вопросы по тегам