【问题标题】:hibernate HQL Query select休眠 HQL 查询选择
【发布时间】:2014-05-31 04:55:52
【问题描述】:

我想将此代码 SQL 转移到 HQL 我尝试了这段代码,但它不起作用

public Admin connect(String login, String password)
{
SessionFactory sessionFactory =createSessionFactory();
Session session = sessionFactory.getCurrentSession();
    session.beginTransaction();
  Admin admin=(Admin) session.createQuery(from admin where login_admin='"+login+"' and password_admin='"+password+"');
    session.getTransaction().commit();

    return admin;

我的班级

public class Admin extends personne implements java.io.Serializable {
private String loginAdmin;
private String passwordAdmin;}

对不起我的英语不好

【问题讨论】:

  • 什么不工作你能详细说明错误吗?
  • 管理员是什么样的?你看到了什么错误?
  • 发布您的管理员课程
  • 这个语法正确吗???
  • 仅仅因为你在使用休眠并不能证明你是注入证明。有关 HQL 注入的信息,请参阅这篇文章:blog.h3xstream.com/2014/02/hql-for-pentesters.html

标签: java hibernate hql


【解决方案1】:

使用以下代码:

Query query = session.createQuery("from Admin where loginAdmin= :login and password = :passwordAdmin");
query.setParameter("login", login);
query.setParameter("password", password );
Admin admin = (Admin)query.uniqueResult();

通过连接字符串来创建 HQL 查询(或任何其他类型的 DB 查询)是一个坏主意,因为这样您将打开系统以进行 SQL 注入!

【讨论】:

    【解决方案2】:

    为了调用sql查询调用 session.createSQLQuery(这里是sql查询); 所以你的代码是错误的。

    为了调用HQL查询调用:

    session.createQuery("from Admin where loginAdmin='"+login+"' and passwordAdmin='"+password+"'"); 
    

    这是假设类是具有属性登录名和密码的管理员

    【讨论】:

      【解决方案3】:

      Hibernate 会将您的 HQL 转换为 SQL。您可以编写如下所示的 HQL 查询来获取特定对象(或记录)。 createQuery() 期望 HQL 查询而不是 SQL 查询。 如果你的课是这样的

      class Admin{
      String loginAdmin;
      String passwordAdmin;
      }
      

      将您的 SQL 查询更改为 HQL,如下所示

      Admin admin=(Admin) session.createQuery
      (from Admin where loginAdmin='"+login+"' and passwordAdmin='"+password+"').uniqueResult();
      

      可以参考uniqueResult()方法here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-23
        • 1970-01-01
        • 2011-05-24
        • 2018-12-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多