`
hotmanhh
  • 浏览: 14957 次
社区版块
存档分类
最新评论

真是郁闷,Hibernate的Id generator不理解

阅读更多
:?

正在练习hibernate,将hibernate融入到以前的项目中。
对于<id></id>中的<generator>理解,不过想使用自己定义的格式流水号。头大了啊。

看参考文档中说明有那么多的可选择,我先选择sequence吧。

呵呵,今天看论坛上的"用户自定义ID Generator的例子",有所启发,按照自己的想法实现了,只是奇怪为何这个例子只有代码没有解释说明,摸索了一会,根据JB的提示错误搞定了。

问题关键集中在其类的映射文件上.hbm.xml的<generator>元素中的声明。
         <generator class="com.dsii.hibernate.po.CustomizedIdGenerator">
                <param name="table">uid_table</param>
                <param name="column">next_hi_value_column</param>
                <param name="prefix">C</param>
        </generator>

其中class为自定义的类,访问方式同我们访问普通的类一样,这个CustomizedIdGenerator类应当extends net.sf.hibernate.id.TableGenerator类,专门负责生成想要的ID。
而后<param name="table">uid_table</param>指名使用哪个表来记录下个可用的ID值,所以还需要一个column声明<param name="column">next_hi_value_column</param>,此时要记得生成这个表后,该column的值一定要给个初值,否则报错要你提供一个hi value。<param name="prefix">C</param>顾名思义当然就是前缀了,这样定义后生成的id形式为CX,其中X为数字。

CustomizedIdGenerator类代码请自行看论坛的文章吧。虽然没有完全搞懂,但也实现了我的需要。其实很简单的,就在最后的return处加上自己需要的格式。比如我就实现了CCC00000002342格式,呵呵,还不错嘛。

此处需要注意的是,千万不可以使用Tomcat的连接池,否则自定义id功能的无法使用。最好选择使用hibernate的自带的连接池。

希望根据此方式类推,慢慢掌握generator的做法。
分享到:
评论

相关推荐

    Hibernate的generator属性

    Hibernate的generator属性 本文讲述Hibernate的generator属性的意义。Generator属性有7种class,本文简略描述了这7种class的意义和用法。

    hibernate中的generator的生成方式hibernate中的generator的生成方式

    hibernate中的generator的生成方式 hibernate中的generator的生成方式

    hibernate_code_generator.rar

    hibernate_code_generator.rar 提供配置文件,自动生成java代码,配置文件,以及hibernate的.hbm映射文件

    Hibernate映射文件id的generator配置方法

    下面小编就为大家分享一篇Hibernate映射文件id的generator配置方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

    一个简单的自定义ID 生成器IDGenerator

    一个用Java 编写简单的自定义ID 生成器IDGenerator

    idgenerator分布式主键ID生成器

    迄今为止最全面的分布式主键ID生成器。优化的雪花算法(SnowFlake)——雪花漂移算法,在缩短ID长度的同时,具备极高瞬时并发处理能力(50W/0.1s)。 原生支持 C#/Java/Go/Rust/C/SQL 等多语言,且提供 PHP 扩展及 ...

    idgenerator:idgenerator是基于redis的id生成器

    idgenerator是基于redis的id生成器 dgenerator是基于redis的id生成器 安装 取得 go get github.com/lbfatcgf/idgenerator 快速开始 package main import ( "fmt" "net/http" "os" "os/signal" "syscall" ...

    Hibernate Pojo Generator-开源

    Hibernate Pojo Generator生成通过Hibernate Annotations(+ Spring)访问数据库所需的所有Java代码,包括JUnit测试(每个表1个),这些测试可以立即运行而无需进一步定制。 大部分使用MySQL进行测试。 移至GitHub:...

    Hibernate笔记 马士兵

    十一、 不需要(持久化)psersistence的字段 18 十二、 映射日期与时间类型,指定时间精度 18 十三、 映射枚举类型 19 第12课 使用hibernate工具类将对象模型生成关系模型 19 第13课 ID主键生成策略 20 一、 Xml方式 ...

    迄今为止最全面的分布式主键ID生成器,多语言新雪花算法(SnowFlake IdGenerator).zip

    迄今为止最全面的分布式主键ID生成器。 优化的雪花算法(SnowFlake)——雪花漂移算法,在缩短ID长度的同时,具备极高瞬时并发处理能力(50W/0.1s)。 原生支持 C#/Java/Go/Rust/C/SQL 等多语言,且提供 PHP 扩展及 ...

    hibernate tools源码运行或修改需要的jar

    hibernate tools源码运行修改需要的jar 源码下载地址是http://anonsvn.jboss.org/repos/hibernate/tags/TOOLS_3_2_4_GA/

    MyBatis-Generator 自动生成Lombok标签 不生成Get/Set方法

    把下载的jar包放在 Maven仓库的 org\mybatis\generator\mybatis-generator-core\1.3.5 下面即可,然后在generatorConfig配置文件中加上&lt;plugin type="org.mybatis.generator.plugins.LombokPlugin" &gt; &lt;/plugin&gt; ...

    Hibernate注释大全收藏

    AUTO 生成器,适用与可移值的应用,多个@Id可以共享同一个 identifier生成器,只要把generator属性设成相同的值就可以。通过@SequenceGenerator 和 @TableGenerator 可以配置不同的 identifier 生成器。 &lt;table-...

    Hibernate中文API大全

    当删除对象时, Hibernate必须使用每一个字段的值来确定一条记录(在组合元素表中,没有单独的关键字段), 如果有为null的字段,这样做就不可能了。你必须作出一个选择,要么在组合元素中使用不能为空的属性,要么...

    mybatis-generator自动生成实体没有注释问题

    直接运行 generator.sh 命令就可以, 如果是window系统,把后缀改为bat就可以了。工具来源,http://www.cnblogs.com/NieXiaoHui/p/6100895.html#undefined,我只是一个搬运工。 显示效果如下: public class ...

    idGenerator

    idGenerator

    百度分布式id 代码uid-generator

    说的简单一点就是:应用在启动时会往数据库表(uid-generator需要新增一个WORKER_NODE表)中去插入一条数据,数据插入成功后返回的该数据对应的自增唯一id就是该机器的workId,而数据由host,port组成。

    hibernate关系映射配置.rar

    &lt;hibernate-mapping&gt; &lt;class name="com.bjsxt.hibernate.User" table="t_user"&gt; &lt;id name="id"&gt; &lt;generator class="native"/&gt; &lt;/id&gt; &lt;!-- --&gt; &lt;/hibernate-mapping&gt; &lt;hibernate-mapping...

    Python Generator

    David Beazley作的关于Python Generator的系统编程slides

    Hibernate注解

    * 9.increnment 插入数据的时候hibernate会给主键添加一个自增的主键,但是一个hibernate实例就维护一个计数器,所以在多个实例运行的时候不能使用这个方法。 * 例:@GeneratedValue(generator = ...

Global site tag (gtag.js) - Google Analytics