我正在将Hibernate用于我的Java应用程序的ORM到Oracle数据库(不是数据库供应商很重要,我们可能有一天会切换到另一个数据库),我想根据用户提供的字符串从数据库中检索对象.例如,在搜索人员时,如果用户正在寻找居住在'fran'的人,我希望能够在旧金山为她的员工提供服务.
SQL不是我的强项,我更喜欢Hibernate的Criteria
构建代码到硬编码字符串.任何人都可以指出我在正确的方向上如何在代码中执行此操作,如果不可能,硬编码的SQL应该如何?
谢谢,
Yuval = 8-)
对于您描述的简单情况,请查看Restrictions.ilike(),它执行不区分大小写的搜索.
Criteria crit = session.createCriteria(Person.class); crit.add(Restrictions.ilike('town', '%fran%'); List results = crit.list();
Criteria crit = session.createCriteria(Person.class); crit.add(Restrictions.ilike('town', 'fran', MatchMode.ANYWHERE); List results = crit.list();
如果你使用Spring的HibernateTemplate与Hibernate进行交互,那么你可以在这里对用户的电子邮件地址进行不区分大小写的搜索:
getHibernateTemplate().find("from User where upper(email)=?", emailAddr.toUpperCase());