Sobes.tech
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 — имя таблицы в базе, а не имя сущности. Такой запрос выполнится напрямую в базе.