Java 如何在hibernate限制中创建toUpperCase

Java 如何在hibernate限制中创建toUpperCase,java,hibernate,hibernate-criteria,Java,Hibernate,Hibernate Criteria,我是这样写代码的 criteria.add(Restrictions.eq("lastName", "ChARaN").ignoreCase()); // 默认情况下,这会将两者转换为小写 生成的SQL: select this_.ID as ID1_0_0_, this_.EMAIL as EMAIL2_0_0_, this_.FIRST_NAME as FIRST_NA3_0_0_, this_.LAST_NAME as LAST_NAM4_0_0_ fr

我是这样写代码的

criteria.add(Restrictions.eq("lastName", "ChARaN").ignoreCase()); //
默认情况下,这会将两者转换为小写

生成的SQL:

select
    this_.ID as ID1_0_0_,
    this_.EMAIL as EMAIL2_0_0_,
    this_.FIRST_NAME as FIRST_NA3_0_0_,
    this_.LAST_NAME as LAST_NAM4_0_0_ 
from
    Employee this_ 
where
    lower(this_.LAST_NAME)=?

    14:56:57,017 TRACE BasicBinder:81 - binding parameter [1] as [VARCHAR] - [charan]
选择
此ID为ID1\u 0\u 0\u,
此电子邮件为EMAIL2\u 0\u 0\u,
这个名字叫FIRST_NA3_0_0_,
这个姓是LAST\u NAM4\u 0\u 0\u
从…起
雇员本
哪里
较低(此姓氏)=?
14:56:57017跟踪基本索引:81-绑定参数[1]为[VARCHAR]-[charan]
我希望Hibernate生成大写的查询,如:

where
       upper(this_.LAST_NAME)=?
在哪里
上(这个姓)=?

不确定如果它使用
上限
而不是
下限
会有什么好处。已经说过,您尝试使用下面的选项强制Hibernate使用
UPPER

criteria.add(Restrictions.sqlRestriction("UPPER({alias}.lastName) = UPPER(?)", "ChaRaN", StringType.INSTANCE))

看看这个:@Charan但这有什么区别?我不认为equals运算符的结果会有任何不同,只要双方都使用大写或小写。如果我们在该列上有索引,我想知道如何使用标准。。。。。是的,我已经尝试过sqlRestriction,这很有效,我知道……,但我正在寻找任何内置的,如果有的话any@Charan至少对于CriteriaAPI,我不认为是否有这样的内置函数。但是,索引和您的CriteriaAPI有什么关系呢?索引是用大写字母在该列上创建的,以便在一个巨大的数据表中快速获取记录。。。所以我想用那个列的大写字母来取,没有其他的go…:(…同时我不喜欢sqlRestrictions…如果我们使用hibernate,让代码完全在hibernate中运行,sqlRestrictions有点像nativesqls@Charan另一个选项是HQL,它具有内置的upper函数。