`

使用Hibernate的自定义sequence

阅读更多
使用HIBERNATE和ORACLE, 定义了主键为自动生成,如下:

<id name="id" type="long">
    <column name="id" precision="22" scale="0" />
         <generator class="sequence-identity" >
             <param name="sequence">ID_SEQUENCES</param>
         </generator>
</id>


然后就报错如下:

Caused by: java.sql.SQLException: Unsupported feature
	at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
	at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
	at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:269)
	at oracle.jdbc.dbaccess.DBError.throwUnsupportedFeatureSqlException(DBError.java:689)
	at oracle.jdbc.driver.OracleConnection.prepareStatement(OracleConnection.java:3456)
	at org.jboss.resource.adapter.jdbc.WrappedConnection.prepareStatement(WrappedConnection.java:351)
	at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:527)
	at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:131)
	at org.hibernate.id.SequenceIdentityGenerator$Delegate.prepare(SequenceIdentityGenerator.java:99)
	at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:54)


网上找了很多解决的办法

1:把ojdbc14.jar改成ojdbc6.jar 发现不行
2:配置hibernate.bhm.xml增加一个hibernate.jdbc.use_get_generated_keys为true/false 也不行

后来看了下HIBERNATE的自增长策略,
http://www.cnblogs.com/flyoung2008/articles/2165759.html

发现问题所在,修改成:
<id name="id" type="long">
    <column name="id" precision="22" scale="0" />
         <generator class="sequence" >
             <param name="sequence">ID_SEQUENCES</param>
         </generator>
</id>


因为XML是反向生成,而且是别人生成的,估计和版本是有关系的。
分享到:
评论

相关推荐

    hibernate中自动生成主键的办法

    在Hibernate中,可以使用`&lt;generator class="sequence"&gt;`来指定使用Sequence作为主键生成策略,并通过`&lt;param name="sequence"&gt;SEQ_CHILD&lt;/param&gt;`来指定具体的序列名称。这种方式适用于需要生成大量连续主键值的...

    hibernate_reference使用指南全

    ### Hibernate使用指南精要 #### 一、简介与入门 **1.1 引言** Hibernate 是一个开源的对象关系映射 (ORM) 框架,它为 Java 应用程序提供了一种将 Java 对象映射到关系型数据库表中的机制。本章节将详细介绍如何...

    hibernate

    5. **ID生成策略**:每个实体类通常都有一个主键字段,Hibernate提供了多种ID生成策略,如Identity、Sequence、Table、UUID等,以适应不同数据库系统的主键生成需求。 6. **注解(Annotations)**:Hibernate使用...

    hibernate5.2.7-src源码

    3. 自定义类型:讲解如何自定义Hibernate的类型,实现与数据库之间的复杂类型映射。 4. 缓存配置与使用:分析二级缓存的配置和使用,以及如何通过配置文件和API启用查询缓存。 通过深入学习Hibernate 5.2.7的源码...

    Hibernate 4.1.1中文文档

    5. **主键生成策略**:Hibernate提供了多种主键生成策略,如`GenerationType.IDENTITY`, `GenerationType.SEQUENCE`, 和 `GenerationType.TABLE`,可以根据不同的数据库系统选择合适的策略。 6. **会话和事务**:...

    Hibernate 多数据库支持解决方案

    例如,Oracle中常用`Sequence`,而MySQL中可能使用`Identity`或自定义的生成器。 6. **Oracle转换到SQL Server 2000注意事项** - 这种转换可能涉及到数据类型、SQL语法、存储过程、触发器等的差异。在迁移过程中,...

    Hibernate注解用法总结

    - `@GeneratedValue`中的`@SequenceGenerator`:当使用`SEQUENCE`策略时,配合使用此注解来定义数据库序列的名称、初始值和每次增量。 举例说明,如果我们有一个User实体,它的主键是自增的ID,同时包含一个版本...

    hibernate annotation 中文文档

    - `@Type`: 使用自定义的Hibernate类型,如日期时间格式等。 以上仅是Hibernate Annotation部分核心概念的简述,实际使用中还需要根据项目需求和最佳实践来灵活应用。深入理解和熟练掌握这些注解,能极大地提升...

    hibernate3.3.2

    5. **主键生成策略(Identifier Generator)**:Hibernate 提供了多种主键生成策略,如.AUTO(自增)、SEQUENCE(序列)、UUID(全局唯一标识符)等,开发者可以根据数据库特性选择合适的策略。 6. **Session接口**...

    hibernate主键生成策略

    在使用 Hibernate 进行持久化操作时,经常需要处理实体类的主键问题。Hibernate 提供了多种主键生成策略,每种策略都有其特定的应用场景和优缺点。 #### 二、详细解释 接下来,我们将详细介绍给定文件中提到的几种...

    Hibernate注解.docx

    例如,如果使用MySQL,`AUTO`策略会自动选择Sequence生成方式,但可能需要预先填充`hibernate_sequence`表。 - `@Column`:将属性映射到表的列,提供了丰富的属性如`name`(列名,默认为属性名)、`nullable`(是否...

    hibernate-mapping参数详解

    Hibernate是一个开源的对象关系映射(ORM)框架,它允许开发者使用面向对象的方式来操作数据库。`hibernate-mapping`是Hibernate配置文件中的一部分,用于定义Java对象与数据库表之间的映射关系。 1. `default-...

    hibernate v3.04中文参考手册

    - 自定义主键生成策略,如SequenceGenerator、TableGenerator等。 12. **事件监听与拦截器** - 实现Hibernate事件监听器,监听对象的生命周期事件。 - 使用Interceptor,自定义逻辑,如对象的预加载、预更新等。...

    Hibernate4实战资料

    例如,对于Oracle数据库,我们可以使用@SequenceGenerator和@GeneratedValue来获取sequence生成的主键。 @Column注解则用来标记实体Bean中的属性与数据库表中的列进行对应。它提供了多个可选参数,如name用于指定...

    Hibernate注解jar包

    Hibernate是Java领域中一款广泛应用的关系对象映射框架,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据库。在Hibernate 3.2版本之后,引入了注解支持,极大地减少了XML配置文件的需求,使得代码...

    hibernate学习文档

    虽然 Hibernate 提供了内置的事务管理,但开发者也可以选择自定义事务处理逻辑。事务管理对于保持数据的一致性和完整性至关重要。 5. **Query 和 Criteria 接口**:这两者用于执行数据库查询。Query 接口支持使用 ...

    hibernate框架笔记

    通过使用Hibernate,开发者可以在不直接编写SQL的情况下操作数据库,极大地提高了开发效率。 #### 二、为什么使用Hibernate? **优点:** - **封装度高**:Hibernate内部处理了大量的细节工作,如事务管理、连接...

Global site tag (gtag.js) - Google Analytics