我使用Trigger和sequence来设置它的PK列。
其Pk的Hibernate映射策略是assigned
..
这会在session.save(obj)
中产生id=0
如何使其返回正确分配的PK值。
session.getIdentifier()
不起作用!
答案 0 :(得分:2)
assigned
表示:没有人生成ID,在持久化之前,ID在实体中明确设置。
你想做什么是不可能的。 Hibernate必须在不知道其ID的情况下插入实体,然后数据库将生成ID,并且Hibernate必须从数据库重新加载实体以知道其ID。但是如何在不知道其ID的情况下重新加载实体?
本机生成器执行相同的操作,并且它起作用,因为数据库提供了getLastGeneratedId()
方法,该方法允许获取数据库生成的IOD。但是你不能用Oracle和触发器做到这一点。
从数据库中删除触发器,使用序列生成器,一切都会好的。