Как возмжоно использовать LIMIT при запросе в spring?
Подскажите, пожалуйста, как при работе через 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
Ответы (2 шт):
Автор решения: Nowhere Man
→ Ссылка
Если есть желание использовать 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);
}
Автор решения: Anastasia
→ Ссылка
Может поможет кому-то еще:
Запрос:
@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);