关于Hibernate的oracle主键id生成策略uuid、native和sequence
2016-09-08 23:30
816 查看
1.uuid是产生一个32位的字符串,所以在数据库主键字段的大小上必须要大于等于32位。另外如果之前在库表设置了触发器和sequence,那么即使是采用uuid主键生成策略,那么hibernate在做插入时,uuid将会失效,而是采用sequence中的值作为主键id。相当于先用uuid做主键id,但是在插入之前又被sequence中的值覆盖掉了。这点必须注意。删除掉该表的触发器即可恢复。
2.native 意味着主键生成机制的实现方式将交给hibernate决定。hibernate 将根据底层数据库适配器dialect 的定义,采用不同数据库特定的主键生成方式。(对于SQLServer和MySQL自动采用自增字段,对于oracle自动采用Sequence生成主键)
注意:在这种情形下,hibernate会默认使用名为hibernate_sequence的序列,如果oracle中没有设置,Console控制台将会产生“Hibernate: select hibernate_sequence.nextval from dualCaused by: java.sql.SQLException:
ORA-02289: 序列(号)不存在”的错误。那么应当在oracle中添加名为hibernate_sequence的序列。
或者采用如下方法来指明具体使用哪个序列:
<generator class="native">
<param name="sequence">HUSER_SEQ</param> </generator>
3.sequence 意味着将采用数据库提供的sequence机制产生主键。在hbm.xml映射文件中,如果采用这种主键映射机制,那么必须明确指定用哪个序列来产生主键。如:
<id name="userId" type="java.lang.Long">
<column name="USER_ID" precision="22" scale="0" />
<generator class="sequence">
<param name="sequence">SEQ_USER</param>
</generator>
</id>
文章出处:http://muzixiang.iteye.com/blog/858781
2.native 意味着主键生成机制的实现方式将交给hibernate决定。hibernate 将根据底层数据库适配器dialect 的定义,采用不同数据库特定的主键生成方式。(对于SQLServer和MySQL自动采用自增字段,对于oracle自动采用Sequence生成主键)
注意:在这种情形下,hibernate会默认使用名为hibernate_sequence的序列,如果oracle中没有设置,Console控制台将会产生“Hibernate: select hibernate_sequence.nextval from dualCaused by: java.sql.SQLException:
ORA-02289: 序列(号)不存在”的错误。那么应当在oracle中添加名为hibernate_sequence的序列。
或者采用如下方法来指明具体使用哪个序列:
<generator class="native">
<param name="sequence">HUSER_SEQ</param> </generator>
3.sequence 意味着将采用数据库提供的sequence机制产生主键。在hbm.xml映射文件中,如果采用这种主键映射机制,那么必须明确指定用哪个序列来产生主键。如:
<id name="userId" type="java.lang.Long">
<column name="USER_ID" precision="22" scale="0" />
<generator class="sequence">
<param name="sequence">SEQ_USER</param>
</generator>
</id>
文章出处:http://muzixiang.iteye.com/blog/858781
相关文章推荐
- 关于Hibernate的oracle主键id生成策略uuid、native和sequence
- 关于Hibernate的oracle主键id生成策略uuid、native和sequence
- 关于Hibernate的oracle主键id生成策略uuid、native和sequence
- 关于Hibernate的oracle主键id生成策略uuid、native和sequence
- 关于Hibernate的oracle主键id生成策略uuid、native和sequence .
- 【hibernate】主键生成策略使用UUID报出如下警告:org.hibernate.id.UUIDHexGenerator - HHH000409: Using org.hibernate.id.UUIDHexGenerator which does not generate IETF RFC 4122 compliant UUID values;
- hibernate中uuid和native等主键生成策略
- SS6.2_Hibernate_Hibernate_IdStrategyAnnotation 主键生成策略uuid Annotation注解的配置方式
- hibernate ID生成策略(sequence)
- Hibernate的ID生成策略/联合主键解决方案
- Oracle: hibernate 的主键生成策略
- 返回hibernate用uuid.hex生成的主键id
- hibernate---id生成策略_联合主键_xml
- Hibernate学习笔记(三)Hibernate生成表单ID主键生成策略
- hibernate---id生成策略_联合主键_Annoation
- oracle 表主键ID的sequence方法(hibernate)
- Hibernate之ID主键生成策略
- Hibernate-Annotation常用的注解归总&&ID的生成策略&&联合主键
- oracle主键自动增长的实现 Oracle Sequence oracle maxid自动生成--ORA-00001: 违反唯一约束条件 (NAME.SYS_C005547)产生的原因之一(select * from all_cons_columns w
- Hibernate面试题 --- Hibernate主键的生成策略(Oracle数据运用那种主键生成策略)