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失效的问题。这种情况通常发生在数据迁移后,原有的Sequence不再与表中的最大值相匹配,导致新记录插入时出现ID冲突或者...
本文将详细介绍如何在Hibernate中使用Oracle sequence,以及在使用过程中应注意的一些事项。 首先,我们来看如何为不同的表创建各自的sequence。在Oracle数据库中,你可以通过SQL语句创建一个sequence,例如: ```...
Oracle 创建自增字段方法-ORACLE SEQUENCE 的简单介绍 Oracle SEQUENCE 是一种特殊的数据库对象,用于生成一系列唯一的数值,通常用于主键或其他需要唯一标识的字段。下面将详细介绍 Oracle 创建自增字段方法-...
4. **第三方库集成**:如果你的项目已经使用了如MyBatis、Hibernate这样的ORM框架,它们通常已经提供了对Oracle Sequence的支持。你可以利用这些库的方法来处理GeneratedKey,而无需直接依赖CoolSQL的特性。 5. **...
### ORACLE SEQUENCE 的详细介绍与应用 #### 一、概述 在数据库开发和管理中,自动编号是一项常用的功能。在 SQL Server 中,我们可以通过自增字段来实现这一功能。而在 Oracle 数据库中,则使用了一个名为 **...
### Oracle中的Sequence介绍及应用 #### 一、Sequence概述 在Oracle数据库中,Sequence是一种用于自动产生数值序列的对象。它可以生成连续的整数或者非连续的整数序列,并且可以根据需求进行递增或递减。Sequence...
为了在Hibernate中利用Oracle的序列(sequence)特性,需要在Hibernate的映射文件中进行相应的配置。以下是一个示例,展示了如何为`Department`实体类配置序列生成器(sequence generator): ```xml <hibernate-...
【hibernate 连接 oracle 数据库】 一、Hibernate 概述 Hibernate 是一个流行的 Java 对象关系映射(ORM)框架,它提供了一种在 Java 应用程序中管理和操作关系数据库的方法。ORM 技术的核心思想是将面向对象的模型...
### Hibernate 连接 Oracle 数据库的关键知识点 #### 1. Hibernate 概述 - **ORM概念**:对象关系映射(Object/Relational Mapping,简称ORM)是一种编程技术,用于将对象模型与关系型数据库之间的数据进行转换。...
在ORACLE数据库中,序列(SEQUENCE)是使用非常频繁的一个数据库对象,但是有时候会遇到序列(SEQUECNE)跳号(skip sequence numbers)的情形,那么在哪些情形下会遇到跳号呢? 事务回滚引起的跳号 不管序列有...
### Oracle GoldenGate 同步 Oracle Sequence 的步骤 Oracle GoldenGate 是一款强大的数据复制软件,能够实现跨平台的数据复制。在企业级应用环境中,为了确保数据的一致性和完整性,经常需要将源数据库中的序列...
在本篇内容中,我们将深入探讨"Hibernate主键策略-sequence",并结合标签中的"源码"和"工具",分析其工作原理和实际应用。 首先,让我们理解什么是序列(Sequence)。在关系型数据库中,如Oracle、PostgreSQL等,...
5. **整合到Web应用**:将sequence和trigger的逻辑整合到你的Web应用中,可能涉及到JDBC的PreparedStatement或者ORM框架(如Hibernate、MyBatis)。在处理数据时,确保正确调用了sequence和触发了trigger。 6. **...
在Oracle数据库中,由于不支持自动递增的主键策略,开发者通常会使用Sequence来生成主键值。本文将深入探讨如何在MyBatis-Plus(MP)框架中配置Oracle的主键Sequence。 首先,Oracle Sequence是Oracle数据库提供的...
sequence-generator简介类似于oracle的sequence,但更加强大支持分布式环境下sequence的生成使用乐观锁和AtomicLong确保sequence的唯一性使用及其简单db scriptCREATE TABLE sequence_database.sequence ( name ...
在开发过程中,可能会用到oracle sequence语句,本文以oracle sequence语句如何重置进行介绍,需要的朋友可以参考下Oracle重置sequence语句1 Sql代码 代码如下: DECLARE n NUMBER(10 ); tsql VARCHAR2(100 ); p_...
在oracle中sequence就是序号,每次取的时候它会自动增加。sequence与表没有关系。 1、Create Sequence 首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限。 创建语句如下: CREATE SEQUENCE seqTest INCREMENT...
Oracle自增长主键自动生成类 public static int nextID String table { if table null return 1; table table toLowerCase ; String strKey table; if sequences containsKey strKey { ...