ID生成方式
序列sequence 只适用于Oracle
1 2 3 4 5
| <id name="id" column="id"> <generator class="sequence"> <param name="sequence">person_seq</param> </generator> </id>
|
自增列,适用于SQLServer、MySql
1 2 3
| <id name="id" column="id"> <generator class="identity"/> </id>
|
取最大值加一 max()+1
1 2 3
| <id name="id" column="id" type="integer"> <generator class="increment"/> </id>
|
根据底层数据库指定生成方法
1 2 3
| <id name="id" column="id"> <generator class="native"/> </id>
|
使用缺省策略
针对Oracle数据库的生成方式还是sequence,只不过需要一个特定名字的sequence,”hibernate_sequence”。
高低位算法
1 2 3 4 5 6 7 8 9 10
| <id name="id" column="id"> <generator class="hilo"> <param name="table">high_value</param> <param name="column">next_value</param> <param name="max_lo">50</param> </generator> </id>
|
Oracle数据库注解 sequence 数据库序列定义
1 2 3 4 5
| @SequenceGenerator(name = "sequenceInfo", sequenceName = "SEQ_name") @GeneratedValue(generator = "sequenceInfo") @Id @Column private Integer id;
|
SEQ_name
为Oracle数据库序列名
Oracle数据库XML sequence 数据库序列定义
1 2 3 4 5 6 7 8 9 10 11 12 13
|
<hibernate-mapping package="com.entity"> <class name="Emp" table="emp"> <id name="id"> <generator class="sequence"> <param name="sequence">SEQ_name</param> </generator> </id> </class> </hibernate-mapping>
|