Sobes.tech
Junior — Middle

El tudná magyarázni, hogy mit értünk a native SQL lekérdezések @Query annotációban történő használatánál Hibernate-ben?

sobes.tech MI

Válasz az MI-től

Hibernate-ben az @Query annotáció lehetővé teszi lekérdezések írását adatok lekérésére. Alapértelmezés szerint ez HQL (Hibernate Query Language) — egy objektumorientált lekérdező nyelv. Azonban, ha natív SQL lekérdezést szeretnél használni, az @Query-ben megadhatod a nativeQuery = true paramétert.

Ez azt jelenti, hogy a lekérdezést közvetlenül SQL-ként hajtja végre, Hibernate átalakítás nélkül. Ez akkor hasznos, ha adatbázis-specifikus funkciókat vagy összetett lekérdezéseket kell használni, amelyeket nehéz kifejezni HQL-ben.

Példa:

@Query(value = "SELECT * FROM users WHERE status = ?1", nativeQuery = true)
List<User> findUsersByStatusNative(String status);

Itt a users az adatbázisban lévő tábla neve, nem az entitás neve. Ez a lekérdezés közvetlenül az adatbázisban fut.