Bagaimana untuk menggunakan anotasi @Query untuk pertanyaan tersuai dalam Hibernate? Anotasi @Query Hibernate membolehkan kami melakukan pertanyaan tersuai menggunakan JPQL atau SQL. Pertanyaan JPQL: Tambahkan anotasi @Query pada kaedah kelas entiti. Tentukan rentetan pertanyaan JPQL. Pertanyaan SQL: Gunakan anotasi @NamedNativeQuery untuk menentukan pertanyaan asli bernama. Tentukan pernyataan pertanyaan dan kelas hasil. Contoh praktikal: Kita boleh mencari pekerja di jabatan tertentu menggunakan pertanyaan berikut: @Query("SELECT e FROM Employee e WHERE e.department = :department")
Senaraikan
@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
JPQL Query
@Query
pada kaedah kelas entiti dan nyatakan rentetan pertanyaan JPQL. Contohnya: 🎜rrreee🎜Kod ini mentakrifkan pertanyaan yang mengembalikan semua pekerja yang gajinya melebihi 50,000. 🎜🎜Pertanyaan SQL🎜🎜Untuk menggunakan pertanyaan SQL asli, anda boleh menggunakan anotasi @NamedNativeQuery
. @NamedNativeQueries
membolehkan kami mentakrifkan berbilang pertanyaan asli bernama. Contohnya: 🎜rrreee🎜Kod ini mentakrifkan pertanyaan SQL asli yang dipanggil "findEmployeesWithSalaryGreaterThan50000" yang mengembalikan semua pekerja yang gajinya melebihi 50,000. 🎜🎜Kes Praktikal🎜🎜Pertimbangkan kelas entiti ini: 🎜rrreee🎜Kita boleh menggunakan anotasi @Query
untuk mencari semua pekerja dalam jabatan tertentu: 🎜rrreee🎜Kini, kita boleh menggunakan findEmployeesInDepartment kaedah /code> untuk mendapatkan semua pekerja dalam jabatan tertentu seperti yang ditunjukkan di bawah: 🎜rrreee🎜Kesimpulan🎜🎜<code>@Query
Anotasi ialah alat berkuasa dalam Hibernate yang membolehkan kami melakukan pertanyaan tersuai. Kita boleh menulis pertanyaan menggunakan JPQL atau SQL asli dan menggunakan parameter bernama untuk menghantar parameter pertanyaan secara dinamik. 🎜Atas ialah kandungan terperinci Bagaimana untuk menggunakan anotasi @Query untuk pertanyaan tersuai dalam Hibernate?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!