Je parle de Using dynamic query in Liferay et de l'utilisation de MySQL 5.5 mais à la place de requêtes personnalisées impliquant plusieurs entités, nous devons appeler une procédure stockée. Nous avons créé une procédure d'échantillonnageComment appeler une procédure stockée dans liferay?
delimiter //
Create Procedure proc_check (OUT count INT)
begin
select count(*) into count from lg_office ;
end//
En default.xml, contenant des requêtes personnalisées, nous avons utilisé
<sql id="de.uhh.l2g.plugins.service.persistence.ProducerFinder.findOfficeCount">
<![CDATA[
Call proc_check(@output)
]]>
</sql>
Dans la méthode du Finder respective, nous avons utilisé l'extrait ci-dessous pour appeler la procédure stockée, passant -1 pour commencer et finir.
String sql = CustomSQLUtil.get(FIND_OFFICE_COUNT);
SQLQuery q = session.createSQLQuery(sql);
QueryPos qPos = QueryPos.getInstance(q);
//qPos.add(lectureseriesId);
List <Integer> sl = (List<Integer>) QueryUtil.list(q, getDialect(), begin, end);
return sl;
En QueryUtil, nous ne pouvions pas trouver d'autres méthodes applicables pour exécuter l'appel. ce message nous obtenons l'erreur ci-dessous
ERROR [RuntimePageImpl-5][JDBCExceptionReporter:82] ResultSet is from UPDATE. No Data.
Cette approche est correcte avec quelque chose qui manque ou si non, s'il vous plaît suggérer approche pour atteindre le même.
Il est étrange d'entendre que vous avez besoin d'une procédure calla stockée, expacially pour effectuer une opération de comptage. Êtes-vous sûr que c'est la bonne façon? –
@DanieleBaggio C'est juste à des fins de test que le réel ne fonctionnait pas! –