当前位置:  开发笔记 > 数据库 > 正文

使用Hibernate进行不区分大小写的搜索

如何解决《使用Hibernate进行不区分大小写的搜索》经验,为你挑选了3个好方法。

我正在将Hibernate用于我的Java应用程序的ORM到Oracle数据库(不是数据库供应商很重要,我们可能有一天会切换到另一个数据库),我想根据用户提供的字符串从数据库中检索对象.例如,在搜索人员时,如果用户正在寻找居住在'fran'的人,我希望能够在旧金山为她的员工提供服务.

SQL不是我的强项,我更喜欢Hibernate的Criteria构建代码到硬编码字符串.任何人都可以指出我在正确的方向上如何在代码中执行此操作,如果不可能,硬编码的SQL应该如何?

谢谢,

Yuval = 8-)



1> Cowan..:

对于您描述的简单情况,请查看Restrictions.ilike(),它执行不区分大小写的搜索.

Criteria crit = session.createCriteria(Person.class);
crit.add(Restrictions.ilike('town', '%fran%');
List results = crit.list();


嗯...首选MatchMode.ANYWHERE超过'%'
对于任何寻找NHibernate等效的人来说,试试'InsensitiveLike()'
我刚试了这个.并且它不会表现不区分大小写
请注意,如果你从Eq切换到Like,你也会启用通配符,所以像oracle中的下划线匹配任何字符.

2> 小智..:
Criteria crit = session.createCriteria(Person.class);
crit.add(Restrictions.ilike('town', 'fran', MatchMode.ANYWHERE);
List results = crit.list();



3> SamS..:

如果你使用Spring的HibernateTemplate与Hibernate进行交互,那么你可以在这里对用户的电子邮件地址进行不区分大小写的搜索:

getHibernateTemplate().find("from User where upper(email)=?", emailAddr.toUpperCase());

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有