Back to questions
Junior — Middle
65
Можете объяснить, что подразумевается под использованием native SQL-запросов в аннотации @Query в Hibernate?
Answer from AI
sobes.tech AI
В Hibernate аннотация @Query позволяет писать запросы для получения данных. По умолчанию это HQL (Hibernate Query Language) — объектно-ориентированный язык запросов. Однако, если нужно использовать нативный SQL-запрос, то в @Query можно указать параметр nativeQuery = true.
Это значит, что запрос будет выполнен напрямую как SQL, без преобразования Hibernate. Это полезно, когда нужно использовать специфичные для базы данных функции или сложные запросы, которые сложно выразить в HQL.
Пример:
@Query(value = "SELECT * FROM users WHERE status = ?1", nativeQuery = true)
List<User> findUsersByStatusNative(String status);
Здесь users — имя таблицы в базе, а не имя сущности. Такой запрос выполнится напрямую в базе.