`
影梦龙
  • 浏览: 122825 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
文章分类
社区版块
存档分类
最新评论

hibernate generator

阅读更多
SSH架构下,向数据库中保存一个持久化对象时,出现以下错误:
ids for this class must be manually assigned before calling save() ...
原因是未给该对象的主键属性赋值,而hbm文件中自动生成的配置是assigned(也就是说要求该属性值必须由应用程序提供值)。
<id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="assigned" />
</id>
assigned要求该字段必须由应用程序提供一个值。如果希望该字段值由数据库自动生成,可将其改为identity,如下:
<id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="identity" />
</id>

这样每次向数据库保存持久化对象时就不需指定id值了。
关于hibernate的generator可选值如下:
原文地址:http://hi.baidu.com/it_lantu/blog/item/d7c2bffa04e3062a4e4aea5c.html

“assigned”
主键由外部程序负责生成,在   save()   之前指定一个。  
 
“hilo”
通过hi/lo   算法实现的主键生成机制,需要额外的数据库表或字段提供高位值来源。   

“seqhilo”
与hilo   类似,通过hi/lo   算法实现的主键生成机制,需要数据库中的   Sequence,适用于支持   Sequence   的数据库,如Oracle。   

“increment”
主键按数值顺序递增。此方式的实现机制为在当前应用实例中维持一个变量,以保存着当前的最大值,之后每次需要生成主键的时候将此值加1作为主键。这种方式可能产生的问题是:不能在集群下使用。   

“identity”
采用数据库提供的主键生成机制。如DB2、SQL   Server、MySQL   中的主键生成机制。   

“sequence”
采用数据库提供的   sequence   机制生成主键。如   Oralce   中的Sequence。   

“native”
由   Hibernate   根据使用的数据库自行判断采用   identity、hilo、sequence   其中一种作为主键生成方式。

“uuid.hex”
由   Hibernate   基于128   位   UUID   算法   生成16   进制数值(编码后以长度32   的字符串表示)作为主键。

“uuid.string”
与uuid.hex   类似,只是生成的主键未进行编码(长度16),不能应用在   PostgreSQL   数据库中。
   
 
“foreign”
使用另外一个相关联的对象的标识符作为主键。

<id>元素中的<generator>用来为该持久化类的实例生成唯一的标识,hibernate提供了很多内置的实现。

Increment:由hibernate自动递增生成标识符,用于为long, short或者int类型生成唯一标识。
identity :由底层数据库生成标识符(自动增长),返回的标识符是 long, short 或者int类型的。
sequence :hibernate根据底层数据库序列生成标识符,返回的标识符 是long, short或者 int类型的。

hilo     :使用一个高/低位算法来高效的生成long, short 或者int类型的标识符。
uuid.hex :用一个128-bit的UUID算法生成32位字符串类型的标识符。
native   :根据底层数据库的能力选择identity, sequence 或者hilo中的一个。
assigned :让应用程序在save()之前为对象分配一个标示符。
foreign :使用另外一个相关联的对象的标识符。和<one-to-one>联合一起使用。
分享到:
评论

相关推荐

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

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

    Hibernate的generator属性

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

    hibernate_code_generator.rar

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

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

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

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

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

    Hibernate笔记 马士兵

    &lt;generator&gt;元素(主键生成策略) 20 二、 annotateon方式 21 1、AUTO默认 21 2、IDENTITY 22 3、SEQUENCE 22 4、为Oracle指定定义的Sequence 22 5、TABLE - 使用表保存id值 23 三、 联合主键 24 1、xml方式 24 2、...

    Hibernate Pojo Generator-开源

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

    Hibernate注解

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

    Hibernate tool 源代码

    Hibernate tool的源代码。 可以学习Eclipse Plugin,Code Generator等知识。

    Hibernate中文API大全

    每当Hibernate重新加载一个包含组件的对象,如果该组件的所有字段为空,Hibernate将假定整个组件为空。 在大多数情况下,这样假定应该是没有问题的。 组件的属性可以是任意一种Hibernate类型(包括集合, 多对多关联...

    hibernate 3中的缓存小结

    &lt;generator class="native" /&gt; &lt;!-- 配置版本号,必须紧跟在id元素后面 --&gt; &lt;!-- Hibernate只会缓存对象的简单属性的值, 要缓存集合属性,必须在集合元素中也加入子元素 而...

    hibernate 教程

    开始Hibernate之旅 1.2. 第一个可持久化类 1.3. 映射cat 1.4. 与猫同乐 1.5. 结语 2. 体系结构 2.1. 总览 2.2. JMX集成 2.3. JCA支持 3. SessionFactory配置 3.1. 可编程配置方式...

    hibernate学习笔记

    主键生成器Generator 6 多对一, 一对一, 一对多, 多对多 7 hibernate多对一关联映射(Hibernate_Many2One) 7 hibernate一对一主键关联映射(单向关联Person----&gt;IdCard) 8 hibernate一对一主键关联映射(双向关联...

    hibernate关系映射配置.rar

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

    Hibernate注释大全收藏

    Hibernate注释大全收藏 声明实体Bean @Entity public class Flight implements Serializable { Long id; @Id public Long getId() { return id; } public void setId(Long id) { this.id = id; } } @Entity ...

    hibernate配置

    hibernate是一个封装在SQL和JDBC之上的企业级应用框架 配置文件的基本结构如下: &lt;?xml version="1.0" encoding='UTF-8'?... &lt;generator class="主键生成策略"/&gt; …… &lt;/hibernate-mapping&gt;

    hibernate注解说明文档

    hibernate注解说明文档

    Hibernate 中文 html 帮助文档

    Generator 5.1.4.2. 高/低位算法(Hi/Lo Algorithm) 5.1.4.3. UUID算法(UUID Algorithm ) 5.1.4.4. 标识字段和序列(Identity columns and Sequences) 5.1.4.5. 程序分配的标识符(Assigned Identifiers) 5.1....

    rapid-generator-v3.9 代码生成器独立版

    rapid-generator是一个生成器引擎,让你可以专注与代码生成器模板的编写, 可以生成如ibatis,ibatis3,hibernate,spring_mvc,struts2等等代码

    java 代码生成器 rapid-generator

    读取数据库表结构,通过对字段类型、名称等分析得到需要的各种变量,根据模板生成相应的pojo类、hibernate的xml配置文件、dao和service的接口和类. 工程可以直接使用 在config文件夹下的 generator.xml里配置数据库...

Global site tag (gtag.js) - Google Analytics