使用返回表、休眠、postgresql 的函数

Posted

技术标签:

【中文标题】使用返回表、休眠、postgresql 的函数【英文标题】:use a function which return table, hibernate, postgresql 【发布时间】:2018-11-24 08:42:54 【问题描述】:

我在 postgresql db 上有一个有效的存储函数

create or replace function sp1(d1 date, d2 date)
returns table(ServiceType varchar, counter bigint) as $$
begin
return query select servicerequesttype, count(*)as counter from events 
where creationdate>=d1 and creationdate<=d2
group by servicerequesttype 
order by(counter) desc;
end;
$$
language plpgsql;

它返回一个包含两列的表,varchar 和 bigint。我执行它就像

select * from sp1();

现在我想在休眠时使用它。据我了解,我想在休眠状态下执行原始查询并为结果创建一个列表。

这可能吗,还是我必须重写存储过程?

【问题讨论】:

【参考方案1】:

您可以在数据库中创建一个视图,然后在Java代码中,您可以查询视图 当您有复杂的查询或聚合值时,这是一种使用的技术。

@Entity
@Table(name = "V_SERVICE_VIEW")
public class ServiceView 
..
..

【讨论】:

是的,但是每次执行该函数时,我都会更改参数。视图将具有所有以前的值还是为空?

以上是关于使用返回表、休眠、postgresql 的函数的主要内容,如果未能解决你的问题,请参考以下文章

在 postgresql 中使用休眠注释设置列的默认值

在 PostgreSQL 中返回表的用户定义函数

PostgreSQL 调用函数返回带有表和附加列的记录集

在 PostgreSQL 中,如何创建一个返回实际表的函数? [复制]

如何在 PostgreSql 函数的返回表中设置标识列?

postgresql中带有临时表的存储函数