钟二网络头像

钟二网络

探索SQL查询技巧、Linux系统运维以及Web开发前沿技术,提供一站式的学习体验

  • 文章92531
  • 阅读801068
首页 SQL 正文内容

hibernate执行原生sql

钟逸 SQL 2025-06-07 02:37:01 2

在某些情况下,使用原始 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 users = query.list();

三、方式二:Session.createNativeQuery()

Session.createNativeQuery() 类似于 Session.createSQLQuery(),但它允许指定要映射到的实体类。例如,以下代码使用 Session.createNativeQuery() 执行原生 SQL 查询并返回一个 List<User> 对象:

java

Session session = HibernateUtil.getSessionFactory().openSession();

NativeQuery query = session.createNativeQuery("SELECT * FROM users", User.class);

List users = query.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 users = criteria.list();

文章目录
    搜索