【发布时间】:2012-05-30 22:55:17
【问题描述】:
我正在使用 Liferay 6.1、Tomcat 和 MySQL。我有一个用于列表 portlet 的 custom-sql 语句。 custom-sql 使用两个参数:groupIds 数组和结果限制。
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 是一个有效的运算符吗?如果没有,如何在不同的组中搜索?
【问题讨论】:
-
嗯,JDBC
PreparedStatement(Liferay 可能在内部使用)不支持为IN子句传入数组。可能是因为这个。检查QueryPos对象是否提供任何 API 来执行此操作。
标签: liferay