【问题标题】:Oracle ADF: How to clear ViewObject cache programmaticallyOracle ADF:如何以编程方式清除 ViewObject 缓存
【发布时间】:2015-05-19 09:09:59
【问题描述】:

我正在使用 jdeveloper 11.1.2.4 开发一个 adf Web 应用程序。我有一个如下的搜索表单。

实际上,当我第一次访问此页面时,我得到了一个空表单。执行一些搜索操作后我访问了另一个页面,然后当我再次返回此页面时,该页面保留了以前的搜索结果。在这个时候,当我试图修改 anthing 意味着更新或删除时,我得到了以下异常。

Another user has changed the row with primary key oracle.jbo.Key[1 ].

当我第一次访问此页面时,修改已成功完成。我尝试清除 viewobject 和 entityobject 缓存。但没有运气。

我认为,如果我每次访问此页面时都获得一个新页面,则可以解决此问题。或者如果有其他更好的解决方案,请告诉我。

请帮助我删除此异常。请给我一个解决方案。

提前致谢。

【问题讨论】:

  • 重新执行 VO 应该可以解决您的问题
  • 我有一个有限的任务流。在进入上述页面之前,我放置了一个方法。在该方法中,我粘贴了以下代码。但它不起作用。试图重新执行视图对象
  • BindingContext b = BindingContext.getCurrent(); DCDataControl d = b.findDataControl("AppModuleDataControl"); d.getApplicationModule().findViewObject("KpiView1").executeQuery();

标签: oracle-adf jdeveloper


【解决方案1】:

在复杂的 ADF 系统中,我们通常通过覆盖所有 Entity Impl 类中的 lock() 方法来抑制此异常:

  /**
     * 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;
        }
    }

【讨论】:

    【解决方案2】:

    您目前使用哪种锁定系统?

    您必须获得对该记录的锁定才能消除此类异常。

    查看此线程以获取获取锁的一种方法。 https://community.oracle.com/thread/2401637

    或者你也可以随时通过在对应的EO实例上调用EntityImpl.lock()方法来获取锁,即使锁定模式是乐观的。

    【讨论】:

      【解决方案3】:

      嘿,您可以尝试以下方法。它对我有用

      • 将 EO 上的主键设置更改为 Refresh After --> 更新/插入。
      • 更改 EO 上对象版本号属性的“更改指示器”选项。
      • 添加了 vo.clearCache();提交之前
      • 重新部署 UiModel。

      【讨论】:

        【解决方案4】:

        在指定主键属性的实体对象中将“已更改指示器”选项设置为 true 解决了我的问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-07-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-07-31
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多