`
flysnowxf
  • 浏览: 573615 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hibernate2和3中关于sequence的配置区别

阅读更多

hbm映射文件中的配置:

        <id

                name="id"

                column="id"

                type="string"

                length="20"

                unsaved-value="null"

                >

            <generator class="sequence">

                <param name="sequence">t_ptvosp_order_model_seq</param>

            </generator>

        </id>

id主键为string类型,但使用了sequence来自动生成主键。此时在hibernate2中报错,但hibernate3却没问题,为什么呢?

2中报错net.sf.hibernate.id.IdentifierGenerationException: this id generator generates long, integer, short,源码对比

2:

       public static Serializable get(ResultSet rs, Type type, SessionImplementor session, Object owner) throws SQLException, IdentifierGenerationException {

              Class clazz = type.getReturnedClass();

              if ( clazz==Long.class ) {

                     return new Long( rs.getLong(1) );

              }

              else if ( clazz==Integer.class ) {

                     return new Integer( rs.getInt(1) );

              }

              else if ( clazz==Short.class ) {

                     return new Short( rs.getShort(1) );

              }

              else {

                     throw new IdentifierGenerationException("this id generator generates long, integer, short");

              }

       }

3:

       public static Serializable get(ResultSet rs, Type type) throws SQLException, IdentifierGenerationException {

              Class clazz = type.getReturnedClass();

              if ( clazz == Long.class ) {

                     return new Long( rs.getLong( 1 ) );

              }

              else if ( clazz == Integer.class ) {

                     return new Integer( rs.getInt( 1 ) );

              }

              else if ( clazz == Short.class ) {

                     return new Short( rs.getShort( 1 ) );

              }

              else if ( clazz == String.class ) {

                     return rs.getString( 1 );

              }

              else {

                     throw new IdentifierGenerationException( "this id generator generates long, integer, short or string" );

              }

 

       }

hibernate2不支持id使用string类型,且还使用sequence的情况。

 

解决:

1)id使用integer之类的数字类型

2)升级为hibernate3

分享到:
评论

相关推荐

    Hibernate Oracle sequence的使用技巧

     2、在你的hbm.xml中的配置  seq_id  这样再插入数据的时候,Hibernate会自动生成如下语句:  hibernate: select seq_id.nextval from dual hibernate: insert into YXJK.T_YXJK_WHRYTXL (XM000

    Hibernate笔记 马士兵

    第2课 Hibernate UML图 6 第3课 风格 7 第4课 资源 7 第5课 环境准备 7 第6课 第一个示例Hibernate HelloWorld 7 第7课 建立Annotation版本的HellWorld 9 第8课 什么是O/R Mapping 11 一、 定义: 11 二、 Hibernate...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

    第4章 hbm2java和hbm2ddl工具  4.1 创建对象-关系映射文件  4.1.1 定制持久化类  4.1.2 定制数据库表  4.2 建立项目的目录结构  4.3 运行hbm2java工具  4.4 运行hbm2ddl工具  4.5 使用XML格式的配置文件  ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

    第4章 hbm2java和hbm2ddl工具  4.1 创建对象-关系映射文件  4.1.1 定制持久化类  4.1.2 定制数据库表  4.2 建立项目的目录结构  4.3 运行hbm2java工具  4.4 运行hbm2ddl工具  4.5 使用XML格式的配置文件  ...

    精通hibernate:对象持久化技术孙卫琴第二版part2

    本章介绍Hibernate提供的两个工具hbm2java和hbm2ddl,它们能简化软件开发过程。 4.1 创建对象-关系映射文件 83 4.1.1 定制持久化类 85 4.1.2 定制数据库表 88 4.2 建立项目的目录结构 90 4.3 运行hbm2java工具 ...

    工程:MyEclipse配置Hibernate

    MyEclipse配置Hibernate 生成后的工程+sql语句(表建立+约束+触发器+sequence)

    Hibernate注解

    * 5.identity 使用SQL Server和MySQL的自增字段,这个方法不能放到Oracle中,Oracle不支持自增字段,要设定sequence(MySQL和SQL Server中很常用)。等同于JPA中的IDENTITY * 例:@GeneratedValue(generator = ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

    第4章 hbm2java和hbm2ddl工具  4.1 创建对象-关系映射文件  4.1.1 定制持久化类  4.1.2 定制数据库表  4.2 建立项目的目录结构  4.3 运行hbm2java工具  4.4 运行hbm2ddl工具  4.5 使用XML格式的配置文件  ...

    Hibernate注释大全收藏

    通过@SequenceGenerator 和 @TableGenerator 可以配置不同的 identifier 生成器。 table="GENERATOR_TABLE" pk-column-name="key" value-column-name="hi" pk-column-value="EMP" allocation-size="20"/&gt; //...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

    第4章 hbm2java和hbm2ddl工具  4.1 创建对象-关系映射文件  4.1.1 定制持久化类  4.1.2 定制数据库表  4.2 建立项目的目录结构  4.3 运行hbm2java工具  4.4 运行hbm2ddl工具  4.5 使用XML格式的配置文件  ...

    精通Hibernate:对象持久化技术第二版part3

    本章介绍Hibernate提供的两个工具hbm2java和hbm2ddl,它们能简化软件开发过程。 4.1 创建对象-关系映射文件 83 4.1.1 定制持久化类 85 4.1.2 定制数据库表 88 4.2 建立项目的目录结构 90 4.3 运行hbm2java工具 ...

    从J2SE到J2EE知识点介绍

    3. 关于jsp在MyEclipse中打开的乱码问题 138 4. 关于html页面在eclipse中打开出现乱码情况 139 5. JSP页面通过URL传递中文参数的乱码问题 139 四、 Struts2 140 (一) 基于struts2的web应用的开发步骤 140 1. MVC设计...

    java面试题

    2. String 和StringBuffer的区别 8 3. 运行时异常与一般异常有何异同? 8 4. 说出ArrayList,Vector,LinkedList的存储性能和特性 8 5. EJB是基于哪些技术实现的?并说出SessionBean和EntityBean的区别,StatefulBean...

    ARCH4系统开发指南

    2.23.3 多个原币和一个折币getGgExchListListProcess 63 2.23.4 关于回调函数 64 2.24 同一个Edit页面用于多模块多actionType的实现方法 64 2.25 在Action和ServiceSpringImpl中读取资源文件 65 2.26 异常管理 65 ...

    Java学习笔记-个人整理的

    \contentsline {chapter}{Contents}{2}{section*.1} {1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{...

    iuhyiuhkjh908u0980

    关于配置的参考文件可以在这里和这里找到。 1) Introduct ... by skydream 2009-10-09 回复 (0) 在Spring中 ...  本文主要探讨如何利用Spring来装配组件,包括其事务上下文。从J2EE应用程序内部连接到单个的数据库...

    支持多数据库的ORM框架ef-orm.zip

    2、DDL操作、建表、删表、trunacte,Sequence创建和TABLE模拟Sequence等,都做了支持。 3、对SQL语法操作和函数的改写与支持。其他特性轻量 该框架对应用环境、连接池、 是否为J2EE应用等没有特殊要求。可以和EJB...

Global site tag (gtag.js) - Google Analytics