我需要使用以下查询,但我无法使用 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/