首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

hibernate 在mysql数据库上,利用sequence生成主键的另一种解决办法

2012-07-08 
hibernate 在mysql数据库上,利用sequence生成主键的另一种解决方法学过hibernate的都知道hibernate支持n种

hibernate 在mysql数据库上,利用sequence生成主键的另一种解决方法
      学过hibernate的都知道hibernate支持n种主键生成策略。但有一种比较诡异,就是sequence。众所周知,oracle 表的主键生成策略是没有自增(identity或者autoIncrement)的,他是通过 sequence 来实现的。而mysql正好与oracle相反,mysql支持自增,恰好不支持 sequence。如果想要在mysql上应用sequence主键生成策略那就悲剧了。
      但是天无绝人之路,问题总是有办法解决的。hibernate为我们提供了其他的解决办法。像一般,我们配置sequence的主键生成策略是这样的:

<?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 name="code"><?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 上完成的)

热点排行