`
flysnowxf
  • 浏览: 577807 次
  • 性别: 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主键策略-sequence

    在本篇内容中,我们将深入探讨"Hibernate主键策略-sequence",并结合标签中的"源码"和"工具",分析其工作原理和实际应用。 首先,让我们理解什么是序列(Sequence)。在关系型数据库中,如Oracle、PostgreSQL等,...

    hibernate 和hibernate_annotations(中文API).pdf帮助文档

    Hibernate是一款强大的Java持久化框架,它为开发人员提供了一种在Java应用中管理和存储数据到关系数据库的标准方式。Hibernate简化了对象关系映射(ORM)的过程,使得开发者无需编写大量的SQL代码,就能实现数据的...

    hibernate中的注释的几种配置方式

    在探讨Hibernate中注释的几种配置方式时,我们主要聚焦于如何通过注解来定义实体类与数据库表之间的映射关系,以及如何在Spring框架下整合Hibernate,利用注解进行SessionFactory的配置。以下是对给定内容中涉及的...

    hibernate注解配置

    通过本文的介绍,我们可以看到Hibernate中的注解配置为开发者提供了极大的便利性和灵活性。合理的使用这些注解不仅可以提高开发效率,还能使代码更加清晰易读。希望本文能帮助读者更好地理解和运用Hibernate中的注解...

    Hibernate 4.1.1中文文档

    2. **安装与配置**:文档详细解释了如何下载Hibernate库,配置Hibernate的主配置文件(hibernate.cfg.xml),以及设置数据库连接参数,包括JDBC驱动、URL、用户名和密码。 3. **实体映射**:实体类是Java对象,它们...

    常用 Hibernate 映射配置说明.doc

    `hibernate-mapping`节点是Hibernate映射文件中的顶级节点,用于定义一系列配置选项,控制整个映射文件的行为和映射规则。这些配置包括数据库连接细节、默认的映射策略等。 - **schema**: 定义了数据库的Schema名称...

    Myeclipse自动生成Hibernate配置文件及实体类映射ORM

    在这个示例中,我们将展示如何使用 Myeclipse 自动生成 Hibernate 配置文件及实体类映射 ORM 配置文件。 第一步骤:新建一个 Web 项目 在 Myeclipse 中,新建一个 Web 项目,名称随意。然后,点击菜单栏中的 ...

    黑马程序员_hibernate框架开发2016版讲义和笔记资料_day1_day2_day3_day4

    1.2 Hibernate概述:Hibernate是Java领域中最受欢迎的ORM框架之一,它支持JPA规范,提供了丰富的API和工具,能够处理复杂的数据库交互。 二、Hibernate的安装与配置 2.1 安装:添加Hibernate的JAR包到项目类路径中...

    hibernate的映射文件配置

    3. **seqhilo**:与hilo相似,但依赖于数据库中的Sequence,适用于Oracle等数据库。 4. **increment**:本地递增,非集群环境适用,每次增加1。 5. **identity**:利用数据库自身的自增特性,如DB2、SQL Server、...

    Hibernate3教程

    - 为了使项目能够使用Hibernate框架,需要下载并导入Hibernate3的核心库和其他相关依赖的jar包。 - **2.2.2 生成hibernate.cfg.xml配置** - 这个配置文件是Hibernate的核心配置文件,用于设置Hibernate的运行环境...

    Hibernate主键类型说明和配置手册.doc

    配置Hibernate时,通常会在`Hibernate.cfg.xml`文件中定义数据库连接和其他属性。例如: ```xml &lt;!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "hibernate-...

    Hibernate Oracle sequence的使用技巧

    总之,理解并正确使用Hibernate与Oracle sequence的结合,可以帮助我们更高效地管理和维护数据库中的自增长主键,同时避免潜在的数据冲突问题。在实际开发中,应根据项目需求和数据库特性灵活选择适合的主键生成策略...

    工程:MyEclipse配置Hibernate

    本篇文章将详细介绍如何在MyEclipse中配置Hibernate,以及相关的数据库操作如SQL语句的编写,包括表的创建、约束、触发器和序列。 1. **MyEclipse配置Hibernate** 配置Hibernate在MyEclipse中通常包括以下步骤: ...

    Hibernate各种主键生成策略与配置详解

    在使用Hibernate进行持久化操作时,合理选择和配置主键生成策略对于确保数据的一致性和优化性能至关重要。本文将详细介绍几种常见的主键生成策略,并结合示例代码帮助读者更好地理解和运用。 #### 二、assigned - ...

    hibernate annotation 中文文档

    《Hibernate Annotation 中文文档》是Java开发者们的重要参考资料,它详细介绍了如何在Hibernate框架中使用注解进行对象关系映射(ORM)。Hibernate是一款强大的开源Java持久化框架,它简化了数据库与Java对象之间的...

    Hibernate学习笔记整理

    1. Hibernate 配置文件的信息、持久化类的信息、映射文件的信息全部在该类中 2. SessionFactory 对象有且只有一个 3. 生命周期是整个 Hibernate 实例 4. SessionFactory 本身就是线程安全的 5. 二级缓存在 ...

    Hibernate中文参考文档学习

    在这个“Hibernate中文参考文档学习”中,我们可以深入理解Hibernate的核心概念、配置、实体映射、查询语言以及其他关键特性。 1. **核心概念** - **对象关系映射(ORM)**: ORM是将数据库中的数据模型转换为面向...

    hibernate和spring技术难点及其要点总结

    本文将深入探讨Hibernate和Spring框架在Java开发中的关键概念、应用场景以及技术难点。首先,我们来看看Hibernate,这是一个流行的ORM(对象关系映射)框架,它简化了Java应用程序与数据库之间的交互。与传统的JDBC...

Global site tag (gtag.js) - Google Analytics