我在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目前还不清楚......
答案 0 :(得分:1)
您需要在Hibernate中执行此操作,而不是在PostgreSQL中执行此操作。
Hibernate获取ID块并缓存它们。因此,PostgreSQL对hibernate_sequence
值的看法并不是Hibernate目前使用的。
此外,在insert
进入employee
之后,无法说明后续插入person
是针对employee
还是{{1}}一,并且没有(支持,安全,可靠)地方存储会话变量以记录最后插入的最后一个员工ID。
您希望在休眠逻辑中执行此操作。