ilike()方法在Hibernate内部如何工作?

时间:2015-02-27 13:05:07

标签: hibernate

在ilike()的内部工作中可以提供一些帮助,因为我经历了hibernate api但是没有弄清楚。例如,我正在搜索一个名称,即vijay,我已经在搜索框中输入了VIJAY(在首都)。 1.它实际上比较两者? 2. hibernate是否使用任何函数将VIJAY转换为小写,然后进行比较?

1 个答案:

答案 0 :(得分:2)

这取决于所使用的数据库方言。

刚检查了代码,它来自(LikeExpression

if ( dialect.supportsCaseInsensitiveLike() ) {
    return column +" " + dialect.getCaseInsensitiveLike() + " ?" + escape;
}
else {
    return dialect.getLowercaseFunction() + '(' + column + ')' + " like ?" + escape;
}

因此,方言负责实际的SQL表达式。例如,在PostgreSQL getCaseInsensitiveLike()上返回ilike,而在Oracle方言中supportsCaseInsensitiveLike()返回false,因此表达式生成为

dialect.getLowercaseFunction() + '(' + column + ')' + " like ?" + escape;

lower(column) like ?