Я передаю массив длинных значений и пытается получить соответствующие записи. Но он бросает ошибку. Позиционный параметр не задан.Ошибка при извлечении записей с использованием пользовательского запроса в Liferay
Вот код
try {
String list = CustomSQLUtil.get(id of the query);
SQLQuery sqlQuery = session.createSQLQuery(list);
sqlQuery.setCacheable(false);
QueryPos q=QueryPos.getInstance(sqlQuery);
q.add(array of long values);
return processObjectListToEntityList(QueryUtil.list(sqlQuery, getDialect() ,QueryUtil.ALL_POS, QueryUtil.ALL_POS));
}
catch(Exception e){
log.error("Error while Fetching Records " + e);
} finally{
closeSession(session);
}
Запрос
SELECT
entity1.name
FROM
entityOne as entity1
JOIN
entityTwo as entity2
WHERE
entity1.id = entity2.id
AND
entity2.id IN (?);
Любая помощь будет оценена.
[Этот вопрос] (http://stackoverflow.com/questions/10816676/liferay-custom-sql-using-in-operator), кажется, отношение к вашей проблеме. –
@TimBiegeleisen: она передает строку в качестве параметра, пока я передаю массив Long. Решение не является правильным. QueryPos предоставляет API для передачи значений массива в качестве параметра в sql-запросе. Я получил ссылку из этой ссылки http://chingovan.blogspot.in/2016/01/liferay-custom-dynamic-query-with-array.html –
Вам нужно преобразовать ваш массив в CSV (значения, разделенные запятыми). –