PostgreSQL getSequence当前值并传递给id

时间:2014-07-27 15:51:40

标签: java sql hibernate postgresql

我在postgreSql中有一个问题需要调用函数/触发器。 我有两个以下课程:

abstract public class person(){

int personid;
}

public class employee extends person(){

int employeeid;

} 

我还有一个序列" hibernate_sequence"

所以我想要实现的目标是:通过插入员工,我希望得到hibernate_sentence的当前值并将其传递给" employeid",这样两个id都可以是平等的。

所以触发器将是:

CREATE TRIGGER equalid before insert on employee EXECUTE PROCEDURE setid;

该功能应该这样做:

CREATE FUNCTION setid() RETURNS numeric as '
update employee set employeeid = select currval(hibernate_sequence) where personid = select currval(hibernate_sequence)' language SQL;

但我不知道如何实现它。 Postgresc doku目前还不清楚......

1 个答案:

答案 0 :(得分:1)

您需要在Hibernate中执行此操作,而不是在PostgreSQL中执行此操作。

Hibernate获取ID块并缓存它们。因此,PostgreSQL对hibernate_sequence值的看法并不是Hibernate目前使用的。

此外,在insert进入employee之后,无法说明后续插入person是针对employee还是{{1}}一,并且没有(支持,安全,可靠)地方存储会话变量以记录最后插入的最后一个员工ID。

您希望在休眠逻辑中执行此操作。