因为oracle不支持自动编号,为解决以上错误,咱们还得为oracle数据库建立一个SEQUENCE(序列)语句如
create sequence t_user_role_seq cache 20 increment by 1 start with 100 nomaxvalue;
在hibernate中的映射文件可这么写 java
- <id name="id" type="java.lang.Long" column="ID">
- <generator class="sequence" >
- <param name="sequence"> t_user_role_seq </param>
- </generator>
- </id>
附录:id生成方式
1,序列sequence 只适用于Oracle 算法
- <id name="id" column="id">
- <generator class="sequence">
- <param name="sequence">person_seq</param><!--指定sequence名-->
- </generator>
- </id>
|
<id name="id" column="id" type="integer"> <generator class="increment"/> </id> |
<id name="id" column="id">
<generator class="native"/>
</id>
|
<id name="id" column="id"> <generator class=" <param name="table">high_value</param> <!-- 设置高位值取值的表 --> <param name="column">next_value</param> <!-- 设置高位值取值的字段 --> <param name="max_lo">50</param> <!-- 指定低位最大值,当取道最大值是会再取一个高位值再运算 --> </generator> </id> |