Java 函数结果作为类字段值
我有PostgreSQL数据库,其中有一个函数Java 函数结果作为类字段值,java,hibernate,postgresql,Java,Hibernate,Postgresql,我有PostgreSQL数据库,其中有一个函数month\u traffic() 是否可以将postgresql函数的结果设置为monthMBytes的字段值 // month traffic @Formula("(select month_traffic(hst_pcode)") private transient float monthMBytes = 0; 致以最良好的祝愿。我阅读了相关的SO问题、一些文档和 我需要使磁场非瞬态 我不需要场地设置员。只有getter enought 在@
month\u traffic()
是否可以将postgresql函数的结果设置为monthMBytes的字段值
// month traffic
@Formula("(select month_traffic(hst_pcode)")
private transient float monthMBytes = 0;
致以最良好的祝愿。我阅读了相关的SO问题、一些文档和
CREATE OR REPLACE FUNCTION month_traffic(hostcode int) RETURNS numeric(14,2) AS $$
DECLARE
begin_date date := CAST((EXTRACT(year FROM now()) || '-' || EXTRACT(month FROM now()) || '-' || '01') AS date);
end_date date := CAST((EXTRACT(year FROM now()) || '-' || EXTRACT(month FROM now()) + 1 || '-' || '01') AS date);
result numeric(14,2) := 0;
BEGIN
result := (SELECT SUM(day_mbytes) FROM daily
WHERE (day_hstcode = hostcode) AND (day_date >= begin_date) AND (day_date < end_date));
IF (result IS NULL) THEN
result := 0;
END IF;
RETURN result;
END;
$$ LANGUAGE plpgsql
现在一切正常。谢谢您的链接和评论。谢谢您的链接。我读了之后感到困惑——在
@formula
注释中是HQL还是原生SQL。我所需要的就是去尝试。
// month traffic
@Formula("(select month_traffic(hst_pcode)")
private transient float monthMBytes = 0;
CREATE OR REPLACE FUNCTION month_traffic(hostcode int) RETURNS numeric(14,2) AS $$
DECLARE
begin_date date := CAST((EXTRACT(year FROM now()) || '-' || EXTRACT(month FROM now()) || '-' || '01') AS date);
end_date date := CAST((EXTRACT(year FROM now()) || '-' || EXTRACT(month FROM now()) + 1 || '-' || '01') AS date);
result numeric(14,2) := 0;
BEGIN
result := (SELECT SUM(day_mbytes) FROM daily
WHERE (day_hstcode = hostcode) AND (day_date >= begin_date) AND (day_date < end_date));
IF (result IS NULL) THEN
result := 0;
END IF;
RETURN result;
END;
$$ LANGUAGE plpgsql
. . .
@Formula("(select month_traffic(hst_pcode))")
private float monthMBytes;
public float getMonthMBytes() {
return monthMBytes;
}
. . .