Я пытаюсь выполнить следующий запрос, но получаю исключение ниже.
List<Category> cats = session.createCriteria(Category.class).add(criterion).list();
Map<Integer, CategoryNode> childNodes = new LinkedHashMap<Integer, CategoryNode>();
for (Category cat : cats) {
CategoryNode childNode = new CategoryNode();
childNode.setCategory(cat);
childNodes.put(cat.getId(), childNode);
}
StringBuilder questions = new StringBuilder();
for (int i = 0; i < childNodes.size(); ++i) {
if (i != 0) {
questions.append(", ");
}
questions.append("?");
}
Query query = session.createSQLQuery(
"select c1.id, count(c2.id) "
+ "from CATEGORY c1 "
+ "left join CATEGORY c2 on c2.parentCategoryId = c1.id "
+ "where c1.id in (" + questions + ") "
+ "group by c1.id");
int i = 0;
for (Iterator<CategoryNode> it = childNodes.values().iterator(); i < childNodes.size(); ++i) {
query.setLong(i + 1, it.next().getCategory().getId());
}
Позиционный параметр не существует: 1 в запросе: выберите c1.id, count(c2.id) из CATEGORY c1 left join CATEGORY c2 on c2.parentCategoryId = c1.id, где c1.id в (?) группе по c1.id
questions
строкой с разделителями-запятыми? - person Rippo   schedule 17.02.2012