我正在使用 Liferay 6.1、Tomcat 和 MySQL。我有一个用于列表 portlet 的 custom-sql 语句。custom-sql 使用两个参数:groupId 数组和结果限制。
SELECT
count(articleId) as count,
...
FROM comments
WHERE groupId IN (?)
GROUP BY articleId
ORDER BY count DESC
LIMIT 0, ?
我的 FinderImpl 类有这个方法:
public List<Comment> findByMostCommented(String groupIds, long maxItems) {
Session session = null;
session = openSession();
String sql = CustomSQLUtil.get(FIND_MOST_COMMENTS);
SQLQuery query = session.createSQLQuery(sql);
query.addEntity("Comment", CommentImpl.class);
QueryPos queryPos = QueryPos.getInstance(query);
queryPos.add(groupIds);
queryPos.add(maxItems);
List<Comment> queryResult = query.list();
return queryResult;
}
这将返回 0 个结果。如果我删除 WHERE IN(),它会起作用。
IN 是一个有效的运算符吗?如果没有,如何在不同的组内搜索?