hibernate HQL查询选择

时间:2014-05-30 14:19:54

标签: java hibernate hql

我想将此代码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;}
抱歉我的英文不好

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

为了调用HQL查询,请调用:

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

这假设该类是Admin,其属性为login和password

答案 2 :(得分:0)

使用以下代码:

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查询(或任何其他类型的数据库查询)是一个坏主意,因为这样你就可以打开系统进行SQL注入了!