如何在 Hibernate 中使用 @Query 註解進行自訂查詢? Hibernate 的 @Query 註解允許我們使用 JPQL 或 SQL 進行自訂查詢。 JPQL 查詢:在實體類別方法上新增 @Query 註解。指定 JPQL 查詢字串。 SQL 查詢:使用 @NamedNativeQuery 註解定義命名的原生查詢。指定查詢語句和結果類別。實戰案例:我們可以使用以下查詢來尋找特定部門中的員工:@Query("SELECT e FROM Employee e WHERE e.department = :department") Lista7c15504e26c2dc9d33fa17ec3230b5f findEmployeesInDepartment(@Param("department") String department);
Hibernate 的@Query
註解允許我們在實體類別上定義自訂JPQL 或SQL 查詢。它提供了一個方便的方式來執行更高級的查詢,而無需編寫低階 SQL 程式碼。
要使用 JPQL(Java 持久化查詢語言),需要在實體類別方法上新增 @Query
註解,並指定 JPQL 查詢字串。例如:
@Query("SELECT e FROM Employee e WHERE e.salary > 50000") List<Employee> findEmployeesWithSalaryGreaterThan50000();
這段程式碼定義了一個查詢,它會傳回所有薪水大於 50,000 的員工。
要使用原生 SQL 查詢,可以使用 @NamedNativeQuery
註解。 @NamedNativeQueries
允許我們定義多個命名的原生查詢。例如:
@NamedNativeQueries({ @NamedNativeQuery( name = "findEmployeesWithSalaryGreaterThan50000", query = "SELECT * FROM Employee WHERE salary > 50000", resultClass = Employee.class ) })
這段程式碼定義了一個名為 "findEmployeesWithSalaryGreaterThan50000" 的原生 SQL 查詢,它傳回所有薪水大於 50,000 的員工。
考慮這樣的實體類別:
@Entity public class Employee { @Id private Long id; private String name; private double salary; //省略 getter 和 setter }
我們可以使用@Query
註解來尋找特定部門中的所有員工:
@Query("SELECT e FROM Employee e WHERE e.department = :department") List<Employee> findEmployeesInDepartment(@Param("department") String department);
現在,我們可以使用findEmployeesInDepartment
方法來取得特定部門中的所有員工,如下所示:
List<Employee> employees = employeeRepository.findEmployeesInDepartment("Engineering");
#@Query
註解是Hibernate 中一個強大的工具,它允許我們執行自訂查詢。我們可以使用 JPQL 或原生 SQL 來編寫查詢,並使用命名參數來動態傳遞查詢參數。
以上是如何在 Hibernate 中使用 @Query 註解進行自訂查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!