如何在HQL Hibernate中将列更改为Upper

时间:2010-10-15 08:19:19

标签: hibernate hql

我想在使用like之前将列从表更改为大写并过滤HQL中的关键字是什么?

这是我的查询

SELECT abc
FROM ABC abc
WHERE abc.id = ?
And upper(abc.description) like '%?%'

由于

2 个答案:

答案 0 :(得分:36)

HQL支持upper()SELECT子句中EJB 3.0规范定义的WHERE函数。来自文档:

  

14.10. Expressions

     
      
  • ...
  •   
  • EJB-QL 3.0定义的任何函数或运算符:substring()trim(),   lower()upper()length()locate(),   abs()sqrt()bit_length()mod()
  •   
  • ...
  •   

所以以下内容应该有效:

from DomesticCat cat where upper(cat.name) like 'FRI%'

参考

  • Hibernate核心参考指南
  • JPA 1.0规范
    • 第4.6.16.1节“字符串函数”

答案 1 :(得分:0)

我在HQL中编写示例查询:

session.createQuery(from Certificate where lower(assignedTo)=:userName)
    .setString("userName",username);

假设:名为Certificate的表格中存在字段assignedTosession是Hibernate Session。