您的位置:首页 > 数据库 > Oracle

Oracle与Hibernate主键映射策略

2008-06-03 09:24 274 查看
在MSSQL、MYSQL可以使用native作为自增主键生成策略。native就是将主键的生成工作交由数据库完成,hibernate不管。但在ORACLE中不能用,ORACLE中本身不提供主键递增生成策略,通过索引和触发器实现主键递增。如果在Hibernate主键生成策略中使用native会出现找不到sequence,使用increment同样不可以,increment不可以使用在集群环境,identity只适用于MSSQL和MYSQL中,同样使用uuid也不可以,只能使用<generator class="sequence"> <param name="sequence">seq_somename</param> </generator>。但是这样做 我发现 hibernate会取得一次sequence, 同时数据库还有一个triger会取得一次sequence, 这样实际的sequence会加2了!! 而且create返回的对象的主键id也是错误的, 因为还被triger加了1, 数据库里面的记录全面是双数, 2,4,6,8 create返回主键却是1,3,5,7,但对整个系统没有大的影响。

用native作为Hibernate主键映射策略,可移植性强适合各种类型的数据库,native就是将主键的生成工作交由数据库完成,hibernate不管。对于Oracle数据库要使用native作为Hibernate主键映射策略,与其它数据有所不同,一定要建立一个全局的序列sequence,而且这个sequence名唯一hibernate_sequence,这是hibernate默认的序列名称,不能更改。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: