java - hibernate查询的sql等价物是什么

标签 java hibernate spring

我需要使用以下查询,但我无法使用 spring 注入(inject),所以我需要用简单的 sql 进行查询。

我怎样才能使命令不使用sessionfactory和任何其他bean

其中注册是我的带有用户名和密码的实体类

public Registration findUserByEmail(String email) {

     try {

          Session session = sessionFactory.getCurrentSession();
          String query = "FROM Registration WHERE email =:email";
          Query query2 = session.createSQLQuery(query); 
          query2.setString("email",email);
          return (Registration) query2.uniqueResult();

     } catch (Exception e) {
                System.out.println(e);
                throw new RuntimeException("DAO failed", e);
            }


    }

最佳答案

您的示例中没有特定于 Spring 的代码。 SessionFactory 是一个 Hibernate 接口(interface),您将需要 Hibernate 将实体映射到数据库或从数据库映射实体。 Hibernate 执行的 SQL 查询类似于

select * from registration where email = 'email'

其中 * 是映射的列和参数中给定的电子邮件。

如果您确实需要摆脱 Hibernate,包括所有映射逻辑和 session 处理,您可以自己构建映射 using plain JDBC用于自己发出 SQL 查询并将 ResultSet 映射到 new Registration()。当然,这比使用 Hibernate 这样的 ORM 麻烦很多。

关于java - hibernate查询的sql等价物是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5442207/

相关文章:

Java线程问题

java - 创建 Windows 10 持久通知

hibernate 读取功能显示旧数据

java - Spring JpaRepository findAll、Java 8 Stream、Connection 已被放弃

java - 如何在露天访问 session 工厂(数据源)?

Java 接口(interface)集合

java - 从 Wiki Dump 中提取文章

java - 多用户数据源 - Spring + Hibernate

java - Hibernate列别名用作实际列名?

java - Spring 的后台作业支持