hibernate处理主键自增
2014-09-29 20:54
302 查看
学过hibernate的都知道hibernate支持n种主键生成策略。但有一种比较诡异,就是sequence。众所周知,oracle 表的主键生成策略是没有自增(identity或者autoIncrement)的,他是通过 sequence 来实现的。而mysql正好与oracle相反,mysql支持自增,恰好不支持
sequence。如果想要在mysql上应用sequence主键生成策略那就悲剧了。
但是天无绝人之路,问题总是有办法解决的。hibernate为我们提供了其他的解决办法。像一般,我们配置sequence的主键生成策略是这样的:
Xml代码
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.example.entity">
<class name="Foo">
<id name="id">
<generator class="sequence"></generator>
</id>
</class>
</hibernate-mapping>
但上面的配置在mysql下是行不通的,如果要适应mysql,需要做将配置改为:
Xml代码
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.example.entity">
<class name="Foo">
<id name="id">
<generator class="org.hibernate.id.enhanced.SequenceStyleGenerator">
<!--初始值,默认是1-->
<param name="initial_value">1000</param>
<!--自增大小,默认是1-->
<param name="increment_siz">1</param>
<!--sequence的名字,默认是"hibernate_sequence"-->
<param name="sequence_name">hibernate_sequence</param>
</generator>
</id>
</class>
</hibernate-mapping>
(以上配置是我在hibernate 3.6.1 上完成的)
摘自:bastengao http://bastengao.iteye.com/blog/1105650
sequence。如果想要在mysql上应用sequence主键生成策略那就悲剧了。
但是天无绝人之路,问题总是有办法解决的。hibernate为我们提供了其他的解决办法。像一般,我们配置sequence的主键生成策略是这样的:
Xml代码
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.example.entity">
<class name="Foo">
<id name="id">
<generator class="sequence"></generator>
</id>
</class>
</hibernate-mapping>
但上面的配置在mysql下是行不通的,如果要适应mysql,需要做将配置改为:
Xml代码
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.example.entity">
<class name="Foo">
<id name="id">
<generator class="org.hibernate.id.enhanced.SequenceStyleGenerator">
<!--初始值,默认是1-->
<param name="initial_value">1000</param>
<!--自增大小,默认是1-->
<param name="increment_siz">1</param>
<!--sequence的名字,默认是"hibernate_sequence"-->
<param name="sequence_name">hibernate_sequence</param>
</generator>
</id>
</class>
</hibernate-mapping>
(以上配置是我在hibernate 3.6.1 上完成的)
摘自:bastengao http://bastengao.iteye.com/blog/1105650
相关文章推荐
- hibernate整合遗留数据库之处理主键(映射自然键之非复合自然键)
- Hibernate中处理无主键表的问题
- Hibernate复合主键的处理
- 基于Eclipse Maven的Spring4/Spring-MVC/Hibernate4整合之七:Hibernate Entity的多字段组成主键处理
- hibernate整合遗留数据库之处理主键(映射自然键之复合自然键)
- Hibernate中处理无主键表的问题
- hibernate整合遗留数据库之处理主键(复合外键引用非主键)
- hibernate 主键为String处理Entity
- Hibernate中如何处理一对多关系中的组合主键
- hibernate整合遗留数据库之处理主键(外键引用非主键)
- hibernate整合遗留数据库之处理主键(外键引用非主键) .
- hibernate整合遗留数据库之处理主键(复合主键的外键)
- hibernate中对联合主键数据保存的一种处理方式
- Hibernate中如何处理一对多关系中的组合主键
- hibernate整合遗留数据库之处理主键(复合主键中的外键)
- Hibernate处理无主键的表的映射问题
- hibernate的共享主键处理
- Hibernate处理无主键的表的映射问题
- 在Hibernate应用中如何处理批量更新和批量删除
- 使用Hibernate处理数据