我正在使用jdeveloper 11.1.2.4开发一个adf Web应用程序。我有一个搜索表格如下。
实际上,当我第一次访问此页面时,我的表格空白。执行一些搜索操作后,我访问了另一个页面,然后当我回到此页面时,该页面保留了以前的搜索结果。此时我正在尝试修改anthing意味着更新或删除我正在接受以下的例外情况。
Another user has changed the row with primary key oracle.jbo.Key[1 ].
第一次访问此页面时,修改已成功完成。我尝试了清除viewobject和entityobject缓存。但没有运气。
我想如果我每次访问此页面时都获得一个新页面,这个问题就可以解决了。或者如果还有其他更好的解决方案,请告诉我。
请帮我删除此例外。请建议我一个解决方案。
提前致谢。
答案 0 :(得分:1)
我们通常通过覆盖所有Entity Impl类中的lock()方法来抑制复杂ADF系统上的此异常:
/**
* customizing locking management:
* Because attribute values can change 'outside' ADF standard life cycle,
* when optimistic locking executes, the exception "Another User Changed the Row" is thrown.
* In this case, we execute locking again, ignoring the exception
*/
public void lock() {
try {
super.lock();
} catch (oracle.jbo.RowInconsistentException e) {
if (e.getErrorCode().equals("25014")) {
super.lock();
} else
throw e;
}
}
答案 1 :(得分:0)
您目前使用哪种锁定系统?
您必须获取该记录的锁定才能摆脱此类异常。
查看此线程以获取锁定的一种方法。 https://community.oracle.com/thread/2401637
或者您也可以通过在相应的EO实例上调用EntityImpl.lock()方法随时获取锁,即使锁定模式是乐观的。
答案 2 :(得分:0)
嘿,你可以尝试以下方法。它对我有用
答案 3 :(得分:0)
在指定主键属性的实体对象中将“已更改指示符”选项设置为true可解决我的问题。