【发布时间】:2014-01-03 23:42:54
【问题描述】:
我有 2 列名称:姓名、姓氏 我有一个名为 search 的搜索值。我希望能够搜索全名,例如:john doe。 (与空间)。到目前为止,我通过输入 john 或 doe 仅使用名称或姓氏。
这是我尝试的全名:
Criterion fullname = Restrictions.and(Restrictions.like("name", search).ignoreCase(),
Restrictions.like("surname", search).ignoreCase());
完整部分:
Private List<Users> getSearch(String search) {
List<Users> users = new ArrayList<Users>();
Session dbSession = HibernateUtil.getSessionFactory().getCurrentSession();
try {
Transaction tx = dbSession.beginTransaction();
Criteria cr = dbSession.createCriteria(Users.class);
Criterion name = Restrictions.or(Restrictions.like("name", search).ignoreCase(),
Restrictions.like("surname", search).ignoreCase());
Criterion fullname = Restrictions.and(Restrictions.like("name", search).ignoreCase(),
Restrictions.like("surname", search).ignoreCase());
Disjunction disjunction = Restrictions.disjunction();
disjunction.add(name);
disjunction.add(fullname);
cr.add(disjunction);
users = (List<Users>) cr.list();
tx.commit();
} catch (HibernateException he) {
}
return users;
}
【问题讨论】:
-
请分享完整的标准代码。
-
澄清一下:您希望您的用户在键入“John D”、“John”、“Doe”时能够搜索并找到相同的“John Doe”?他们可以用空格以外的任何东西来分隔名称部分吗?
-
现在他们可以通过输入 john 或 doe 找到用户,我希望他们能够通过输入 john doe 找到用户。不只是空白会做。
标签: java hibernate servlets criteria restrictions