TROUBLESHOOTING: 行数据不一致异常[RowInconsistentException]

关键字:oracle.jbo.RowInconsistentException  JBO-25014  其他用户已更改具有主键 XXX 的行

异常现象:

在ADF中新建或者更新数据的时候,进行连续的Commit操作,第一次成功,接着会出现JBO-25014异常。

异常原因:

在比较EO Cached Entity与数据库中的值的时候,出现不一致。也就是在ADF的Commit操作后,数据库中的数据被其他操作修改了,这种情况会出现在数据库端使用了Trigger的时候;另一种情况是,EO中的Attribute使用了用户自定义的domain-type,该类型的equals()方法返回false。

页面上弹出如图错误:

解决方案:

1,如果EO有Attribute使用了domain-type,检查equals()方法;

2,如果数据库端使用了trigger,修改EO的 Refresh after update  属性;

3,使用vo.executeQuery同步Model层与数据库中的数据。

异常内容:

view plain <Utils><buildFacesMessage> ADF: Adding the following JSF error message: 其他用户已更改具有主键 oracle.jbo.Key[1068 ] 的行。   oracle.jbo.RowInconsistentException: JBO-25014: 其他用户已更改具有主键 oracle.jbo.Key[1068 ] 的行。       at oracle.jbo.server.OracleSQLBuilderImpl.doEntitySelectForAltKey(OracleSQLBuilderImpl.java:1064)       at oracle.jbo.server.BaseSQLBuilderImpl.doEntitySelect(BaseSQLBuilderImpl.java:548)       at oracle.jbo.server.EntityImpl.doSelect(EntityImpl.java:7843)       at oracle.jbo.server.EntityImpl.lock(EntityImpl.java:5631)       at oracle.jbo.server.EntityImpl.beforePost(EntityImpl.java:6134)       at oracle.jbo.server.EntityImpl.postChanges(EntityImpl.java:6306)       at oracle.jbo.server.DBTransactionImpl.doPostTransactionListeners(DBTransactionImpl.java:3172)       at oracle.jbo.server.DBTransactionImpl.postChanges(DBTransactionImpl.java:2980)       at oracle.jbo.server.DBTransactionImpl.commitInternal(DBTransactionImpl.java:2018)       at oracle.jbo.server.DBTransactionImpl.commit(DBTransactionImpl.java:2277)       at oracle.adf.model.bc4j.DCJboDataControl.commitTransaction(DCJboDataControl.java:1577)       at oracle.adf.model.binding.DCDataControl.callCommitTransaction(DCDataControl.java:1404)       at oracle.jbo.uicli.binding.JUCtrlActionBinding.doIt(JUCtrlActionBinding.java:1427)       at oracle.adf.model.binding.DCDataControl.invokeOperation(DCDataControl.java:2141)       at oracle.jbo.uicli.binding.JUCtrlActionBinding.invoke(JUCtrlActionBinding.java:730)       at oracle.adf.controller.v2.lifecycle.
PageLifecycleImpl.executeEvent(PageLifecycleImpl.java:394)       at oracle.adfinternal.view.faces.model.binding.FacesCtrlActionBinding._execute(FacesCtrlActionBinding.java:252)       at oracle.adfinternal.view.faces.model.binding.FacesCtrlActionBinding.execute(FacesCtrlActionBinding.java:210)       at cn.xxx.doSave(FR32Bean.java:100)       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

时间: 2024-11-08 18:18:20

TROUBLESHOOTING: 行数据不一致异常[RowInconsistentException]的相关文章

SAP MM ME38看到的SA交货计划行数据与SE16+EKEH表数据不一致之原因解析

SAP MM ME38看到的SA交货计划行数据与SE16+EKEH表数据不一致之原因解析     比如对于SA 5500025995,其第一个交货计划行数据里的交货日期是2016.01.06.   而EKEH表里的数据,第一个交货计划行数据里的交货日期是2016.01.02.原因何在?   经查,EKEH 表保存时的是SA release document data,而不是原始的交货计划行数据(这些数据是保存在表EKET),   表EKET,   当我们执行ME84事务代码之后,系统会产生SA

MySQL如何对主从数据不一致的情况进行校验并继续同步

两台MySQL,发生了种种种种,导致了两个表的数据不一致,但是同步还在正常进行,后来意识到这种问题(可能之前skip啊,或者一开始搭建的时候就是不一致的状态),该如何修复呢? 我们看可以来看下percona-toolkit这个工具是如何修复这种情况的 校验: 主库:192.168.100.8 3306 从库:192.168.100.12 3305 MySQL version:MySQL-5.6.30 1.master 服务器安装yum依赖包 yum install perl perl-devel

C# 的DataTable 对像最大可有多少行数据?

问题描述 DataTable对象最我可以存放多少行数据?我把本地的文本文件解析成结构数据放入到DataTable对象,数据量小的时候没有问题,可是只要数据量大了就出问题了报:"Indexwasoutsidetheboundsofthearray"异常.是怎么回事?现在的文件为3.5M结构数据例:##2008-12-1614:10:46,631[7]INFO(null)#UDPPackage*002e000300283030313031303030303030363132303030#U

有云存储团队公布 Ceph 中最严重数据不一致 BUG!

触发场景 目前,块存储服务是Ceph存储中被使用的最普遍的服务之一,通过块存储服务,可以向客户端以使用块设备一样访问Ceph集群.然而,目前在使用块存储服务时,尤其是OpenStack与Ceph对接时,如果没有严格的控制Ceph端的对象大小(使用 >= 8MB对象时),将有可能导致严重的数据不一致情况,该异常由于XFS文件系统本身对Fiemap的支持特性导致的. XFS使用fiemap时,当extents数量大于1364时,通过ioctl的FS_IOC_FIEMAP接口,获取的extents数量

续《表扫描与索引扫描返回的行数不一致》

续<表扫描与索引扫描返回的行数不一致> 上篇文章主要介绍了如何从分析表得到的报错,以及trace中的信息,判断表返回的记录与索引返回记录不一致时的处理方式.下面这篇文章则介绍了针对ORA-1499进行问题排查的一些基本方法. OERR: ORA-1499 table/Index Cross Reference Failure - see trace file (文档 ID 1499.1) Error: ORA 1499 Text: table/Index Cross Reference Fai

表扫描与索引扫描返回的行数不一致

某个应用最近总出现死锁,其中一些是因为报了索引和数据行存在不匹配的问题,MOS中有如下文档可以参考. ORA-1499. Table/Index row count mismatch(文档 ID 563070.1)现象: 使用"validate structure cascade"分析表时报ORA-1499的错误,trace文件中包含"Table/Index row count mismatch"的错误信息.例如: SQL> analyze table tes

更新多行数据,然后把更新的结果读出来,这样的 SQL 要怎么写?

考虑这样一种场景,或许还挺常见的:我们需要在关系数据库中更新一行或多行数据的多个字段,更新完了还不算,还得拿到被更新的某一个字段的结果. 再考虑这样一种场景:我们需要在关系数据库中更新一行或多行数据的多个字段,更新完了还不算,还得拿到这批被更新的记录的主键,以便操作其他的有关联的表. 这么说也许太抽象,就拿点赞计数来打个比方(做为点赞狂魔的我,前不久才在朋友的 博文 下面强行点了 666 个赞). 假设有这样一张表,就叫 likes 好了,记录了一个网站里面每个能被点赞的对象被赞的次数.id 是

在Struts中使用JavaBean和List(多行数据)类型属性

数据   在 Strust 中,我们可能经常要在 ActionForm 中使用其他 JavaBean 作为属性类型,这里就存在着如何使用好这些属性与 HTML Form 之间的数据交换,下面我们就这些问题做一讲解. 如在用户注册界面中,我们通常会将用户的联系方式形成一个单独的新的 Class ,如 Contact ,包含以下属性:电话 (tel) ,手机 (cell) , Email(email) , QQ(qq) ,通信地址 (adress) 等等,这样条理也比较清晰,以下是这个 Action

sql server 2008 R2中如何插入多行数据

插入多行数据时,可以不用写N多的insert into. SELECT DISTINCT ' ('+'''' +loginip  +''''+') '+',' FROM dbo.Login WHERE loginname  IN ( SELECT  DISTINCT loginname FROM dbo.Login WHERE loginip='61.170.245.61' ) go --获得这样的结果 ('61.61.245.243'), ('61.61.245.61'), 这样直接 inse