【发布时间】:2012-01-31 13:15:42
【问题描述】:
我试图在休眠中编写一个搜索查询。我从公开会议源代码中获得了帮助。 所以我的查询:
public User getAllUser(String search) {
String[] searchItems = search.split(" ");
try {
String sqlQuery = "SELECT * FROM USER u " + "WHERE u.deleted = 1 ";
sqlQuery += "AND ( ";
for (int i = 0; i < searchItems.length; i++) {
if (i != 0) {
sqlQuery += " OR ";
}
sqlQuery += "( " + "lower(u.last_name) LIKE '"
+ StringUtils.lowerCase("%" + searchItems[i] + "%")
+ "' " + "OR lower(u.first_name) LIKE '"
+ StringUtils.lowerCase("%" + searchItems[i] + "%")
+ "' " + "OR lower(u.username) LIKE '"
+ StringUtils.lowerCase("%" + searchItems[i] + "%")
+ "' " + ") ";
}
sqlQuery += " )";
log.debug("sqlQuery : " + sqlQuery);
Query query = sessionFactory.getCurrentSession().createQuery(
sqlQuery);
return (User) query.list().get(0);
} catch (HibernateException e) {
e.printStackTrace();
}
return null;
}
它说有一个意外的令牌,但我没有找到它在哪里。
所以我有两个问题:
- 如何使其发挥作用。
- 如何在休眠中使用 Criteria 和 Projection/Restrictions 编写搜索查询
【问题讨论】:
-
阅读文档和javadoc怎么样? docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/…
-
无论如何,您是否每次都收到此错误,或者它是否出现在特定的搜索字符串中?您能否举一个导致错误的 SQL 输出示例。
-
嘿@perissf 我没听懂...
-
嘿@Digbyswift 我解决了。我使用 createSqlQuery 方法解决了它。我正在寻找如何使用 Criteria 转换它...