Ich verweise Using dynamic query in Liferay und mit MySQL 5.5, aber anstelle von benutzerdefinierten Abfragen mit mehreren Entitäten müssen wir eine gespeicherte Prozedur aufrufen. Wir haben ein Beispielverfahren erstelltWie gespeicherte Prozedur in Liferay aufrufen?
delimiter //
Create Procedure proc_check (OUT count INT)
begin
select count(*) into count from lg_office ;
end//
In default.xml, benutzerdefinierte Abfragen enthält, wir
<sql id="de.uhh.l2g.plugins.service.persistence.ProducerFinder.findOfficeCount">
<![CDATA[
Call proc_check(@output)
]]>
</sql>
Im jeweiligen Finder Methode verwendet haben, haben wir den folgenden Code-Schnipsel, die gespeicherte Prozedur aufrufen, Übergeben von -1 für Anfang und Ende.
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;
In QueryUtil konnten wir andere anwendbare Methoden nicht finden, um den Anruf auszuführen. Post this wir erhalten die folgenden Fehler
ERROR [RuntimePageImpl-5][JDBCExceptionReporter:82] ResultSet is from UPDATE. No Data.
Ist dieser Ansatz richtig mit etwas fehlt oder wenn nicht, bitte Ansatz vorschlagen, das gleiche zu erreichen.
Es ist seltsam zu hören, dass Sie Calla gespeicherte Prozedur benötigen, um eine Zählung durchführen zu können. Sind Sie sicher, dass dies der richtige Weg ist? –
@DanieleBaggio Das ist nur für Testzwecke, da das eigentliche nicht funktionierte! –