Ich übergeben Array von langen Werten und versuchen, die relevanten Datensätze zu erhalten, aber es wirft einen Fehler Positional Parameter ist nicht definiert.Fehler beim Abrufen von Datensätzen mit benutzerdefinierten Abfrage in Liferay
Hier ist der Code
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);
}
Abfrage
SELECT
entity1.name
FROM
entityOne as entity1
JOIN
entityTwo as entity2
WHERE
entity1.id = entity2.id
AND
entity2.id IN (?);
Jede Hilfe würde geschätzt.
[Diese Frage] (http://stackoverflow.com/questions/10816676/liferay-custom-sql-using-in-operator) scheint für Ihr Problem relevant. –
@TimBiegeleisen: Sie gibt String als Parameter weiter, während ich Array of Long übergebe. Die angebotene Lösung ist nicht der richtige Weg. QueryPos stellt eine API bereit, um Array-Werte als Parameter in der SQL-Abfrage zu übergeben. Ich habe Referenz von diesem Link http://chingovan.blogspot.in/2016/01/liferay-custom-dynamic-query-with-array.html –
Sie müssen Ihr Array in CSV (Komma getrennte Werte) Zeichenfolge konvertieren. –