`

hibernate annation oracle sequence

 
阅读更多

struts2 spring3 mybatis3 用了很久,回过头来用hibernate,突然发现annation下的oracle序列使用很有意识

 

@Entity
@Table(name="sys_users")
@SequenceGenerator(name="seqUsers",sequenceName="seq_users")
public class SysUsers {
	@Id
	@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="seqUsers")
	@Column(name="user_id")
	private Long userId;
	@Column(name="user_name")
	private String userName;
	@Column(name="user_password")
	private String userPwd;
	@Transient
	private String userStatus;
	@Column(name="time_insert")
	private Date timeInsert;

  如上,加入这段之后,他会用hibernate自己的序列,而放弃oracle生成的序列seq_users.

而令人困惑的是,在写入该对象时,打印的hql里还会显示

 

select seq_users.nextval from dual;

 可实际查询序列确发现该句并未调用而引起序列的变化。

 

这里要想使用oracle序列的正确做法是:

 

 

@Entity
@Table(name="sys_people")
@SequenceGenerator(name = "seqPeople", sequenceName = "seq_people")
public class SysPeople {
	@Id
	@GeneratedValue(generator="seqPeople")
	@Column(name="people_id")
	private Long peopleId;
	@Column(name="people_name")
	private String peopleName;
	@Column(name="age")
	private Long age;
	@OneToOne
	@JoinColumn(name="house_id")
	private SysHouse sysHouse;

 去掉strategy=GenerationType.SEQUENCE,即可。

分享到:
评论

相关推荐

    Oracle sequence 重置(失效恢复)

    ### Oracle Sequence 重置(失效恢复) 在进行Oracle数据库移植或维护时,可能会遇到Sequence失效的问题。这种情况通常发生在数据迁移后,原有的Sequence不再与表中的最大值相匹配,导致新记录插入时出现ID冲突或者...

    Hibernate Oracle sequence的使用技巧

    本文将详细介绍如何在Hibernate中使用Oracle sequence,以及在使用过程中应注意的一些事项。 首先,我们来看如何为不同的表创建各自的sequence。在Oracle数据库中,你可以通过SQL语句创建一个sequence,例如: ```...

    Oracle创建自增字段方法-ORACLE SEQUENCE的简单介绍

    Oracle 创建自增字段方法-ORACLE SEQUENCE 的简单介绍 Oracle SEQUENCE 是一种特殊的数据库对象,用于生成一系列唯一的数值,通常用于主键或其他需要唯一标识的字段。下面将详细介绍 Oracle 创建自增字段方法-...

    让CoolSQL支持Oracle Sequence的GeneratedKey,懂的入

    4. **第三方库集成**:如果你的项目已经使用了如MyBatis、Hibernate这样的ORM框架,它们通常已经提供了对Oracle Sequence的支持。你可以利用这些库的方法来处理GeneratedKey,而无需直接依赖CoolSQL的特性。 5. **...

    ORACLE SEQUENCE的简单介绍

    ### ORACLE SEQUENCE 的详细介绍与应用 #### 一、概述 在数据库开发和管理中,自动编号是一项常用的功能。在 SQL Server 中,我们可以通过自增字段来实现这一功能。而在 Oracle 数据库中,则使用了一个名为 **...

    oracle中sequence介绍及应用

    ### Oracle中的Sequence介绍及应用 #### 一、Sequence概述 在Oracle数据库中,Sequence是一种用于自动产生数值序列的对象。它可以生成连续的整数或者非连续的整数序列,并且可以根据需求进行递增或递减。Sequence...

    在hibernate中实现oracle的自动增长

    为了在Hibernate中利用Oracle的序列(sequence)特性,需要在Hibernate的映射文件中进行相应的配置。以下是一个示例,展示了如何为`Department`实体类配置序列生成器(sequence generator): ```xml <hibernate-...

    hibernate连接oracle数据库.doc

    【hibernate 连接 oracle 数据库】 一、Hibernate 概述 Hibernate 是一个流行的 Java 对象关系映射(ORM)框架,它提供了一种在 Java 应用程序中管理和操作关系数据库的方法。ORM 技术的核心思想是将面向对象的模型...

    hibernate连接oracle数据库.pdf

    ### Hibernate 连接 Oracle 数据库的关键知识点 #### 1. Hibernate 概述 - **ORM概念**:对象关系映射(Object/Relational Mapping,简称ORM)是一种编程技术,用于将对象模型与关系型数据库之间的数据进行转换。...

    分享ORACLE SEQUENCE跳号总结

    在ORACLE数据库中,序列(SEQUENCE)是使用非常频繁的一个数据库对象,但是有时候会遇到序列(SEQUECNE)跳号(skip sequence numbers)的情形,那么在哪些情形下会遇到跳号呢?  事务回滚引起的跳号  不管序列有...

    oracle GoldenGate 同步oracle sequence的步骤

    ### Oracle GoldenGate 同步 Oracle Sequence 的步骤 Oracle GoldenGate 是一款强大的数据复制软件,能够实现跨平台的数据复制。在企业级应用环境中,为了确保数据的一致性和完整性,经常需要将源数据库中的序列...

    Hibernate主键策略-sequence

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

    使用JDeveloper开发WEB应用时同时使用Oracle的sequence和trigger

    5. **整合到Web应用**:将sequence和trigger的逻辑整合到你的Web应用中,可能涉及到JDBC的PreparedStatement或者ORM框架(如Hibernate、MyBatis)。在处理数据时,确保正确调用了sequence和触发了trigger。 6. **...

    浅谈MyBatis-Plus学习之Oracle的主键Sequence设置的方法

    在Oracle数据库中,由于不支持自动递增的主键策略,开发者通常会使用Sequence来生成主键值。本文将深入探讨如何在MyBatis-Plus(MP)框架中配置Oracle的主键Sequence。 首先,Oracle Sequence是Oracle数据库提供的...

    sequence-generator:比oracle sequence更加强大的序列生成器,支持分布式环境,配合MHA可完美做到高可用,与spring无缝集成,使用非常简单可靠

    sequence-generator简介类似于oracle的sequence,但更加强大支持分布式环境下sequence的生成使用乐观锁和AtomicLong确保sequence的唯一性使用及其简单db scriptCREATE TABLE sequence_database.sequence ( name ...

    oracle sequence语句重置方介绍

    在开发过程中,可能会用到oracle sequence语句,本文以oracle sequence语句如何重置进行介绍,需要的朋友可以参考下Oracle重置sequence语句1 Sql代码 代码如下: DECLARE n NUMBER(10 ); tsql VARCHAR2(100 ); p_...

    详解ORACLE SEQUENCE用法

    在oracle中sequence就是序号,每次取的时候它会自动增加。sequence与表没有关系。 1、Create Sequence 首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限。 创建语句如下: CREATE SEQUENCE seqTest INCREMENT...

    java自动生成Oracle sequence管理类

    Oracle自增长主键自动生成类 public static int nextID String table { if table null return 1; table table toLowerCase ; String strKey table; if sequences containsKey strKey { ...

Global site tag (gtag.js) - Google Analytics