hibernate hql语句怎么在查询时区分大小写?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hibernate hql语句怎么在查询时区分大小写?相关的知识,希望对你有一定的参考价值。

如题,现在我设置了用户名和密码框,在登录时查询输入的用户名在sql server数据库是不是存在(大小写很重要),但是我根据用户名从数据库查询是不区分大小写的怎么办?用的hql语句!!
不能更改表结构额

  实现hibernate hql语句在查询时区分大小写,可以使用lower或者upper函数。
  【补充】

  Hibernate拥有一种功能非常强大的查询语言,这种语言被有意得与SQL非常相似,便于开发人员掌握。HQL完全是面向对象的,可以用来过程多态、继承、关联等关系。
参考技术A HQL语句是要区分大小写的。。。 参考技术B public ZjSystemUser get(ZjSystemUser obj)

Session s = HibernateSessionFactory.getSession();
StringBuilder sql = new StringBuilder();
sql.append(" from ZjSystemUser where 1=1 ");
sql.append(" and USER_ID = '"+obj.getUserId()+"' and PASSWORD='"+obj.getPassword()+"'");
Query q = s.createQuery(sql.toString());

ArrayList<ZjSystemUser> list = (ArrayList<ZjSystemUser>)q.list();
if(list!=null && list.size()>0)

return list.get(0);

else

return null;



User 实体类,里面有USER_ID ,PASSWORD两个属性,
关键在拼hql时,你查的时候用“= ”,不要用“like”,你试试看,本回答被提问者采纳
参考技术C 字段的名字是不区分大小写的,值是区分的呀,你在仔细查找下代码,或者发出来看看

Hibernate 检索方式之 HQL 检索方式

HQL(Hibernate Query Language) 是面向对象的查询语言,它和 SQL 查询语言有些相似。在 Hibernate 提供的各种检索方式中,HQL 是使用最广的一种检索方式,它有如下功能:

  -在查询语句中设定各种查询条件

  -支持投影查询,即检索出对象的部分属性

  -支持分页查询

  -支持连接查询

  -支持分组查询,允许使用 HAVING 和 GROUP BY 关键字

  -提供内置聚集函数,如 sum()、min()、max()

  -支持子查询

  -支持动态绑定参数

  -能够调用用户定义的 SQL 函数或标准的 SQL 函数

 

HQL 检索方式包括以下步骤:

  -通过 Session 的 createQuery()方法创建一个 Query 对象,它包括一个 HQL 查询语句。HQL 查询语句中可以包含命名参数

  -动态绑定参数

  -调用 Query 相关方法执行查询语句

 

Query 接口支持方法链编程风格,它的 setXxx()方法返回自身实例,而不是 void 类型

HQL vs SQL:

  -HQL 查询语句是面向对象的,Hibernate 负责解析 HQL 查询语句,然后根据对象-关系映射文件中的映射信息,把 HQL 查询语句翻译成相应的 SQL 查询语句。HQL 查询语句中的主体是域模型中的类及类的属性

  -SQL 查询语句是与关系数据库绑定在一起的,SQL 查询语句中的主体是数据库表及表的字段

 

绑定参数:

  -Hibernate 的参数绑定机制依赖于 JDBC API 中的  PreparedStatement 的预定义 SQL 语句功能

  -HQL 参数绑定有两种形式:

    --按参数名字绑定:在 HQL 查询语句中定义命名参数,命名参数以“:”开头。

    --按参数位置绑定:在 HQL 查询语句中用“?”来定义参数位置

  -相关方法:

    --setEntity():把参数与一个持久化类绑定

    --setParameter():绑定任意类型的参数。该方法的第三个参数显式指定 Hibernate 映射类型

HQL 采用 ORDER BY 关键字对查询结果排序

 

        // 1. 创建 Query 对象
        String hql = "FROM Employee e WHERE e.id < ?";
        Query query = session.createQuery(hql);
        
        // 2. 绑定参数
        query.setInteger(0, 130);
        
        // 3. 执行查询
        List<Employee> employees = query.list();
        System.out.println(employees.size());            

 

以上是关于hibernate hql语句怎么在查询时区分大小写?的主要内容,如果未能解决你的问题,请参考以下文章

hibernate 一对多update操作的hql语句怎么写?

hibernate hql查询 与Criteria 查询语句区别和效率

hibernate的hql语句条件查询查不到结果?

Hibernate之HQL检索(查询)方式

(hibernate)如果我想查询表的总记录数,HQL语句应该怎么写?又如何获得值呢?

hibernate HQL添加语句