`

hibernate+oracle返回的ID和数据库的ID不一致

阅读更多

最近在项目中遇到一个问题,因为用的是ORACLE数据库,所以有一些表是建立了序列和触发器来使添加进去的数据ID自动增加1.因为有一个操作是同时保存几个表的数据,所以就要用到先插入数据的id存到另一个表中。

奇怪的现象发生了:回的ID,和数据库中的ID不对应,都是相差1.例如hibernate返回的是259,数据库中就是260.经过排查发现是trigger触发器的问题,因为hibernate中的model层ID映射的是序列名称,所以保存的时候hibernate先自增了一,然后到数据库中,又调用trigger,所以数据库中ID自增就为2了,自增了两次。

当然还有一些疑问,不过现在的解决方案是把数据库中的trigger删除掉了就解决了。ID就会对应了

分享到:
评论

相关推荐

    (3.0版本)自己写的struts2+hibernate+spring实例

    数据库用oracle.如果不用oracle的话.可能菜单表的查询出不来.我的菜单表的查询允许选择上级菜单查询该菜单所对应的所有下级菜单.所以用了递归查询. criteria.add(Restrictions.sqlRestriction("MENUITEM_ID in...

    (struts1+spring1.2+hibernate3),操作oracle 9i增上改查

    数据库很简单 oracle里新建一个 表id name age 数据库名称可自定义修改,这个例子是根据网上搜集过来改的,网上是操作sql 2000的 看起来 冗余代码 多,本人整理后改称操作oracle 简洁易懂 是入门 学习 ssh操作 ...

    struts2.0+hibernate3.3+spring2.5的简单程序

    根据自己的oracle数据库修改WEB-INF下面的application-context.xml的数据库配置,别忘了建序列SEQ_TEST_ID struts2+hibernate3.3+spring2.5,我采用的是jboss服务器,用myeclipse6.0+jdk6.0开发的。 至于其他的问题...

    Hibernate Oracle sequence的使用技巧

    一、为表创建自增长自段有两种,一种是不同的表使用各自的Sequence,方法如下:  1、在Oracle sequence首先... hibernate: select seq_id.nextval from dual hibernate: insert into YXJK.T_YXJK_WHRYTXL (XM000

    Spring多数据源配置_分布式数据

    Tomcat+spring+hibernate+jotm,还有就是struts、Oracle等 二、需求说明 系统里有2套不同网域的oracle数据库,之间的数据需要进行交互。 三、Dao配置 1、定义jtom Bean xml 代码 1. <bean id="jotm" class="org....

    hibernate配置

    <id name="数据库中表的主键名所对应的持久化对象中的属性名" column="对应数据库中表的主键名" type="java.lang.String(数据库中主键字段的数据类型)"> <generator class="assigned"></generator> //数据库中...

    ssh2多文件的上传与下载

    Struts2+hibernate+spring...文件的删除根据数据库id进行删除(数据库表存放在数据库文件夹中,将data.sql和object.sql导入oracle数据库即可) 6.文件上传是运用了Ajax技术对上传文件校验,判断数据库中是否存在该文件

    Hibernate注解

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

    spring3.2+strut2+hibernate4

    <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect <prop key="hibernate.show_sql">true <prop key="hibernate.hbm2ddl.auto">update ${jdbc.username} ...

    jdbc基础和参考

    C语言实现的,提供语言和(基于SQL的)数据库进行交互的“一致性”的接口 JDBC:java版本的ODBC JDBC连接数据库的步骤: 1.注册驱动(加载驱动): 注册的方式: 1.使用类加载器(使用反射的方式) Class.for...

    ssh(structs,spring,hibernate)框架中的上传下载

     文件数据存储在Blob类型的FILE_CONTENT表字段上,在Spring中采用OracleLobHandler来处理Lob字段(包括Clob和Blob),由于在程序中不需要引用到oracle数据驱动程序的具体类且屏蔽了不同数据库处理Lob字段方法上的...

    用Struts、Hibernate和display超简单实现分页

    一、含演示数据库建立脚本(较简单) 二、使用Struts、Hibernate和display超简单的实现了分页,你不用在页面上再写很多和很多判断,简单到只需要几行语句: ... 三、由于使用了display,所以自动实现了Excel ...

    oracle 数据按主键删除慢问题的解决方法

    一开始一直以为是hibernate的内部处理上有关联操作导致的删除和更新数据缓慢。所以将原先使用hibernate的saveOrupdate方法,改查jdbc的 sql语句来处理update和delete数据操作。但是依然没效果!!! 怀疑数据库出...

    SOY Framework框架Java RCP编程(一)--配置开发环境

    修改Hibernate数据库方言的配置(hibernate.dialect)为项目选用的数据库类型,如果采用是mysql 5.0数据库,设置为org.hibernate.dialect.MySQLDialect, 如果采用oracle9+数据库则设置为org.hibernate.dialect.Oracle9...

    springmybatis

    MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录. orm工具的基本思想 无论是用过的hibernate,mybatis,你都可以法相他们有一个...

    解析Oracle中多表级联删除的方法

    方法一:创建约束时设定级联删除(但一般由于各种原因或出于各种考虑在创建数据库时没有设定级联删除)SQL语句: 代码如下:CREATE TABLE “U_WEN_BOOK”.”FARTAB” (“FAR_ID” NUMBER(10) NOT NULL,“FAR_NAME” ...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    随着博客人数的增加, Blog 作为一种新的生活方式、新的工作方式、新的学习方式已经被越来越多的人所接受,并且在改变传统的网络和社会结构:网络信息不再是虚假不可验证的,交流和沟通更有明确的选择和方向性,单一...

    EOSS V2.0.4 企业运营支撑系统(基于RBAC原理的权限管理)

    其于用户,角色,权限,菜单的一套“简约实用”的权限管理系统。 完美兼容IE6.0,IE6.0+,Chrome,Firefox。...3:暂时只有mysql数据库备份(请下载用sqlYog工具导入),如果需要oracle数据,请自行转换。

    java毕业设计_车辆紧急救援系统

    车辆紧急救援系统oracle数据库创建语句 车辆紧急救援系统sqlserver数据库创建语句 车辆紧急救援系统spring+springMVC+hibernate框架对象(javaBean,pojo)设计 车辆紧急救援系统spring+springMVC+mybatis框架对象...

Global site tag (gtag.js) - Google Analytics