Как вызвать хранимую процедуру в liferay?

Я имею в виду Использование динамического запроса в Liferay и использование MySQL 5.5, но вместо пользовательских запросов, включающих несколько объектов, нам нужно вызвать хранимую процедуру. Мы создали образец процедуры

delimiter //
Create Procedure proc_check (OUT count INT)
begin
select count(*) into count from lg_office ;
end//

В default.xml, содержащем пользовательские запросы, мы использовали

<sql id="de.uhh.l2g.plugins.service.persistence.ProducerFinder.findOfficeCount">
        <![CDATA[
            Call proc_check(@output)
        ]]>
    </sql>

В соответствующем методе Finder мы использовали приведенный ниже фрагмент для вызова хранимой процедуры, передавая -1 как для начала, так и для конца.

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;

В QueryUtil мы не смогли найти другие применимые методы для выполнения вызова. Разместите это, мы получим ошибку ниже

ERROR [RuntimePageImpl-5][JDBCExceptionReporter:82] ResultSet is from UPDATE. No Data.

Является ли этот подход правильным, если что-то отсутствует, или, если нет, предложите подход для достижения того же.

2 ответа

В liferay нет встроенной утилиты для вызова хранимой процедуры, но вы можете просто установить соединение с DataAccess.getConnection(); и использовать API JDBC, как этот способ

 Connection connection =DataAccess.getConnection();
 CallableStatement cs  = connection.prepareCall("{Call proc_check(@output)}");
 ResultSet rs = cs.executeQuery();

Посмотри на это, попробуй.

session = openSession();
String sql = CustomSQLUtil.get(DELETE_BY_PROJETID);
SQLQuery query = session.createSQLQuery(sql);
query.setCacheable(false);
QueryPos qPos = QueryPos.getInstance(query);
qPos.add(projectId);
query.executeUpdate();

https://web.liferay.com/it/community/forums/-/message_boards/message/37490823

Другие вопросы по тегам