如何在 Hibernate 中使用 @Query 注解进行自定义查询?

发布时间:2024-04-17 15:48:11

如何在 Hibernate 中使用 @Query 注释定制查询?Hibernate 的 @Query 我们可以使用注释 JPQL 或 SQL 自定义查询。JPQL 查询:添加物理类方法 @Query 注解。指定 JPQL 查询字符串。SQL 查询:使用 @NamedNativeQuery 注明定义命名的原生查询。指定查询句和结果类。实战案例:我们可以使用以下查询来找到特定部门的员工:@Query("SELECT e FROM Employee e WHERE e.department = :department") List findEmployeesInDepartment(@Param("department") String department);

如何在 hibernate 中使用 @query 注解进行自定义查询?

如何在 Hibernate 中使用 @Query 自定义查询注释 介绍

Hibernate 的 @Query 注释允许我们在实体类中定义自定义 JPQL 或 SQL 查询。它为实施更高级别的查询提供了一种方便的方式,而无需编写低级别的查询 SQL 代码。

JPQL 查询

要使用 JPQL(Java 需要在实体类方法中添加持久性查询语言) @Query 注释,并指定 JPQL 查询字符串。例如:

@Query("SELECT e FROM Employee e WHERE e.salary > 50000")
List<Employee> findemployeswithsalygreaterthan50000();

登录后复制

这个代码定义了一个查询,它返回的所有工资都大于 50,000 的员工。

SQL 查询

要使用原生 SQL 查询,可使用 @NamedNativeQuery 注解。@NamedNativeQueries 允许我们定义多个名称的原始查询。例如:

@NamedNativeQueries({
    @NamedNativeQuery(
        name = "findemployeswithSalygreaterthan5000000",
        query = "SELECT * FROM Employee WHERE salary > 50000",
        resultClass = Employee.class
    )
})

登录后复制

这个代码定义了一个名字 “findemployeswithsalarygreaterthan50000” 的原生 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 自定义查询注释?详情请关注图灵教育的其他相关文章!

上一篇 Spring Security 框架的架构如何设计?
下一篇 返回列表

文章素材均来源于网络,如有侵权,请联系管理员删除。

标签: Java教程Java基础Java编程技巧面试题Java面试题