Я использую hibernate с функцией в PostgreSQL для обновления записи в БД.Hibernate executeUpdate() для функции PostgreSQL
Ниже приводится функция PostgreSQL,
CREATE OR REPLACE FUNCTION updatesegment(segid bigint, segname text, segdesc text, segmeta text)
RETURNS void AS
$BODY$
BEGIN
UPDATE segment
SET
name = segname,
description = segdesc,
segmentmetadata = segmeta
WHERE
id = segid;
END;
$BODY$
LANGUAGE plpgsql;
В коде Java я вызова функции, как показано ниже.
public int updateSegment(Long segmentId, String segName, String segDesc, String segMeta) {
SQLQuery query = (SQLQuery)sessionFactory.getCurrentSession().createSQLQuery("SELECT updatesegment(:segmentId, :segName, :segDesc, :segMeta)")
.setParameter("segmentId", segmentId)
.setParameter("segName", segName)
.setParameter("segDesc", segDesc)
.setParameter("segMeta", segMeta);
int rows = query.executeUpdate();
return rows;
}
Когда я вызвать функцию Java updateSegment() выше с правильными входными параметрами, запись в БД обновляется, как ожидалось. Но query.executeUpdate() всегда возвращает 0, где он должен возвращаться.
Что я делаю неправильно и почему не выполняетUpdate() возвращает 1?
Заранее спасибо ... !!!
Итак, вы вызываете executeUpdate(), но передаете ему запрос SELECT? Похоже, возможно, это ваша проблема ... – Tim
Мне нужен SELECT, чтобы вызвать функцию plpgsql. В противном случае я не могу вызывать функцию в БД .. и внутри функции plpgsql есть инструкция обновления. –