Как возмжоно использовать LIMIT при запросе в spring?

Рейтинг: -1Ответов: 2Опубликовано: 29.06.2023

Подскажите, пожалуйста, как при работе через spring в запросе применить LIMIT? Перелопатила массу вариантов. Подскажите, пожалуйста.

    @Query("select noteId from usersNotes where note = :note limit 1")
    Long findnoteIdbyText_test(@Param("note") String note);

Такой вариант тоже пробовала

   @Query(value ="select noteId from usersNotes where note = :note limit 1", nativeQuery = true)
    List<Notes> findnoteIdbyText_test(@Param("note") String note);

Результат: could not extract ResultSet; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: could not extract ResultSet

Ответы

▲ 0

Если есть желание использовать LIMIT 1, следует установить атрибут nativeQuery = true:

@Query("select noteId from usersNotes where note = :note limit 1", nativeQuery = true)
Long findNoteIdByText_test(@Param("note") String note);

Или же можно переписать запрос, заменив limit 1 на Top / First в названии метода (текст запроса будет сгенерирован автоматически)

public interface UserNotesRepository extends JpaRepository<UserNotes, Long>
    Optional<UserNotes> findFirstByNote(String note);
}
▲ 0

Может поможет кому-то еще:

Запрос:

@Query("select noteId from usersNotes where note = :note")
List<Long> findnoteIdbyText_test(@Param("note") String note);

Вызов:

List<Long> calText = notesRepository.findnoteIdbyText_test(update.getCallbackQuery().getMessage().getText());
Long LastNoteId = calText.isEmpty() ? null : calText.get(calText.size() - 1);