Je passe le tableau de valeurs longues et essaie d'obtenir les enregistrements pertinents Mais il lance une erreur Le paramètre de position n'est pas défini.Erreur lors de la récupération des enregistrements à l'aide de la requête personnalisée dans Liferay
Voici le 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);
}
Recherche
SELECT
entity1.name
FROM
entityOne as entity1
JOIN
entityTwo as entity2
WHERE
entity1.id = entity2.id
AND
entity2.id IN (?);
Toute aide serait appréciée.
[Cette question] (http://stackoverflow.com/questions/10816676/liferay-custom-sql-using-in-operator) semble pertinente à votre problème. –
@TimBiegeleisen: elle passe la chaîne comme paramètre pendant que je passe devant Array of Long. La solution fournie n'est pas la bonne façon. QueryPos fournit une API pour transmettre des valeurs de tableau en tant que paramètre dans la requête sql. J'ai obtenu la référence à partir de ce lien http://chingovan.blogspot.in/2016/01/liferay-custom-dynamic-query-with-array.html –
Vous devez convertir votre tableau en chaîne CSV (valeurs séparées par des virgules). –