EntityImpl 中重写的 doDML() 不会刷新属性
Overridden doDML() in EntityImpl does not refresh attributes
我正在使用 Oracle ADF 页面更新 table 中的数据。我的实体对象是基于table,但我希望DML(插入、更新、删除)在数据库中经过一个封装过程,而不是使用ADF框架生成的默认DML。
为此,我正在关注 Oracle 的文档,可在此处找到:http://docs.oracle.com/cd/E23943_01/web.1111/b31974/bcadveo.htm#ADFFD1129
一切正常。问题是,默认的 ADF DML 处理将在写入后自动刷新实体行,使用 RETURNING INTO
子句或单独发出的 SELECT
语句(取决于 isUseReturningClause()
的值在 EntityDefImpl
对象中)。这样做是为了在 DML 过程中数据库修改该行时更新应用程序前端(例如,BEFORE ROW
触发器更改值)。
但是,当我覆盖 doDml()
以用对我的包过程的调用替换默认框架 DML 时,它不再自动刷新,即使 isUseReturningClause()
returns false。
我尝试将代码添加到我的 doDml()
实现中以在之后重新查询,但它没有用(也许我没有做正确)。但是,Oracle 的文档没有说明必须这样做。
有谁知道如何做到这一点?
更新
之后我又尝试通过调用 doSelect()
让 doDml()
刷新,并且成功了。我最初的尝试没有成功,因为 doSelect()
没有发送更改通知。
不过,我担心这不是 Oracle 的文档所说的那样做,所以我不知道这是正确的还是一个错误或一个明显的坏主意。所以,我原来的问题仍然成立。
我用 Oracle 记录了一个 SR。他们的回应是,如果您重写 doDML()
并且不调用 super.doDML()
,那么您将失去框架的自动刷新功能。
他们不会评论我的解决方案,即在我的 doDML()
覆盖中进行任何插入或更新后调用 doSelect(false)
。他们的政策是,如果您需要有关定制的建议,您应该聘请 Oracle 咨询。
在 ADF World 我遇到过这种情况,我用简单的方法解决了它,
首先,这里似乎有错误,但我可以解释应该完成的预期程序是什么。
在 MVC 方法中背景 [模型层] 中设置的值不应由用户编辑。
解决方案在 1 个字中添加 属性 of af|inputText disabled="true".
我正在使用 Oracle ADF 页面更新 table 中的数据。我的实体对象是基于table,但我希望DML(插入、更新、删除)在数据库中经过一个封装过程,而不是使用ADF框架生成的默认DML。
为此,我正在关注 Oracle 的文档,可在此处找到:http://docs.oracle.com/cd/E23943_01/web.1111/b31974/bcadveo.htm#ADFFD1129
一切正常。问题是,默认的 ADF DML 处理将在写入后自动刷新实体行,使用 RETURNING INTO
子句或单独发出的 SELECT
语句(取决于 isUseReturningClause()
的值在 EntityDefImpl
对象中)。这样做是为了在 DML 过程中数据库修改该行时更新应用程序前端(例如,BEFORE ROW
触发器更改值)。
但是,当我覆盖 doDml()
以用对我的包过程的调用替换默认框架 DML 时,它不再自动刷新,即使 isUseReturningClause()
returns false。
我尝试将代码添加到我的 doDml()
实现中以在之后重新查询,但它没有用(也许我没有做正确)。但是,Oracle 的文档没有说明必须这样做。
有谁知道如何做到这一点?
更新
之后我又尝试通过调用 doSelect()
让 doDml()
刷新,并且成功了。我最初的尝试没有成功,因为 doSelect()
没有发送更改通知。
不过,我担心这不是 Oracle 的文档所说的那样做,所以我不知道这是正确的还是一个错误或一个明显的坏主意。所以,我原来的问题仍然成立。
我用 Oracle 记录了一个 SR。他们的回应是,如果您重写 doDML()
并且不调用 super.doDML()
,那么您将失去框架的自动刷新功能。
他们不会评论我的解决方案,即在我的 doDML()
覆盖中进行任何插入或更新后调用 doSelect(false)
。他们的政策是,如果您需要有关定制的建议,您应该聘请 Oracle 咨询。
在 ADF World 我遇到过这种情况,我用简单的方法解决了它, 首先,这里似乎有错误,但我可以解释应该完成的预期程序是什么。 在 MVC 方法中背景 [模型层] 中设置的值不应由用户编辑。
解决方案在 1 个字中添加 属性 of af|inputText disabled="true".