在某些情况下,使用原始 SQL 查询可以比使用 Hibernate 对象模型更有效或更方便。例如,当需要执行复杂的查询或使用原生 SQL 函數时。Hibernate 提供了执行原生 SQL 查询的多种 ,以下将详细介绍这些 。
二、方式一:Session.createSQLQuery()
Session.createSQLQuery() 允许你创建原生 SQL 查询。查询返回的结果类型可以通过 addScalar() 或 addEntity() 指定。例如,以下代码使用 Session.createSQLQuery() 执行原生 SQL 查询并返回一个 List<Object[]> 对象:
java
Session session = HibernateUtil.getSessionFactory().openSession();
SQLQuery query = session.createSQLQuery("SELECT * FROM users");
List
三、方式二:Session.createNativeQuery()
Session.createNativeQuery() 类似于 Session.createSQLQuery(),但它允许指定要映射到的实体类。例如,以下代码使用 Session.createNativeQuery() 执行原生 SQL 查询并返回一个 List<User> 对象:
java
Session session = HibernateUtil.getSessionFactory().openSession();
NativeQuery
List
四、方式三:Session.createCriteria()
Session.createCriteria() 也可以用于执行原生 SQL 查询。Criteria 对象允许你构建更复杂的查询,并使用 Hibernate 对象模型来指定查询参数和结果映射。例如,以下代码使用 Session.createCriteria() 执行原生 SQL 查询并返回一个 List<User> 对象:
java
Session session = HibernateUtil.getSessionFactory().openSession();
Criteria criteria = session.createCriteria(User.class);
criteria.add(Restrictions.sqlRestriction("name like '%john%'"));
List