我正在使用带有 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;
}
当我使用正确的输入参数调用上面的 updateSegment() java 函数时,数据库中的记录会按预期更新。但是 query.executeUpdate() 总是返回 0,而它应该返回 1。
我在做什么错,为什么 executeUpdate() 不返回 1?
提前致谢...!!!