Spring Data - получить последнюю запись из таблицы

Я использую Spring Data JPA и хочу получить последнюю запись из таблицы Settings.

У меня есть SettingsRepository со стандартными методами, реализованными Spring Data. Как написать метод (или запрос) для извлечения последней строки из данной таблицы?

interface SettingsRepository extends JpaRepository<Settings, Long> {
    // ?
}

что для вас значит «последний»?

Fran Montero 15.06.2018 10:31

Таблица заказов перевернута по идентификатору, если вы используете последовательность, или creation_date, если вы используете аудит, тогда ограничьте 1 записью.

Nico Van Belle 15.06.2018 10:31

Я хотел бы сделать что-то вроде этого: "выберите * из порядка настроек по идентификатору desc limit 1"

k13i 15.06.2018 10:35
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
23
3
41 840
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Специальной функции для получения последней записи нет.

Однако вы можете выполнить порядок в обратном порядке (например, DESC по идентификатору - при условии, что идентификатор есть) и получить первую запись.

Обновлено: согласно предложению @ MountainKing в комментариях ниже, вы можете использовать findTopByOrderByIdDesc()

Я знаю, как это сделать в SQL, но как это сделать с помощью Spring Data?

k13i 15.06.2018 10:36

как вы имеете в виду, что для этого нет специальной функции? Вы можете использовать findTop OrderByDesc ()

Lemmy 15.06.2018 10:38

@MountainKing Думаю, я мог бы сформулировать это точнее. Я имел в виду следующее: нет функции, которая могла бы напрямую получить последний результат без упорядочения по убыванию (о чем я знаю).

FrederikVH 15.06.2018 10:40

Спасибо @MountainKing, это то, что я искал

k13i 15.06.2018 10:44
Ответ принят как подходящий

Вы должны использовать findTopByOrderByIdDesc()

Это называется именованным запросом, вы можете проверить документация

Я бы хотел увидеть результат, когда 50 потоков вставляются в одну и ту же таблицу ...

Book Of Zeus 18.10.2019 20:23

@madhairsilence - это именованный запрос Spring Boot. Проверить документы ... docs.spring.io/spring-data/jpa/docs/current/reference/html/…

Dinesh Shekhawat 09.03.2020 08:11

как ни странно, очень важно назвать метод так, как указано выше, несмотря на то, что он говорит findTopBy ... и затем не указывает, что его искать, и сразу переходит к OrderBy, а затем имеет имя поля и, наконец, заканчивается Desc; это способ.

Kyle Willkomm 05.05.2020 05:41

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