Hibernate`assigned`策略使用sequence和trigger返回0

时间:2012-06-27 11:33:30

标签: oracle hibernate sequence

我使用Trigger和sequence来设置它的PK列。

其Pk的Hibernate映射策略是assigned ..

这会在session.save(obj)中产生id=0

返回的对象

如何使其返回正确分配的PK值。

session.getIdentifier()不起作用!

1 个答案:

答案 0 :(得分:2)

assigned表示:没有人生成ID,在持久化之前,ID在实体中明确设置。

你想做什么是不可能的。 Hibernate必须在不知道其ID的情况下插入实体,然后数据库将生成ID,并且Hibernate必须从数据库重新加载实体以知道其ID。但是如何在不知道其ID的情况下重新加载实体?

本机生成器执行相同的操作,并且它起作用,因为数据库提供了getLastGeneratedId()方法,该方法允许获取数据库生成的IOD。但是你不能用Oracle和触发器做到这一点。

从数据库中删除触发器,使用序列生成器,一切都会好的。