InvalidOwnerException错误

来源:互联网 发布:oracle启动命令 linux 编辑:程序博客网 时间:2024/04/27 15:37

在使用Oracle ADFm 来开发master-detail关系的应用程序过程中,当试图往detail行集对象中插入新行的时候报错误信息:

oracle.jbo.InvalidOwnerException: JBO-25030: Failed to find or invalidate owning entity

 

这个错误信息的产生原因是由于创建实体对象关系的时候,关系的属性设置为了强连接,意味着在主记录不存在的时候从纪录是不可能生成的,因此当王detail行集中插入新行的时候,由于它没有master纪录的上下文信息,所以报出找不到它的主实体。

 

对于在Oracle EBS环境下作过Form应用的开发人员对这点应该更加清楚,Form中数据块之间可以创建关系,关系上面有一个属性叫做:防止无主操作。它的意思就是当主记录不存在的时候,不能创建从纪录,就和上面的ADFm错误是一样的道理。

 

存在这样控制的目的是防止一些无效数据的产生,保证数据的有效性,正如我们常见的订单和订单行这样的关系中,如果订单都没有创建,何来订单行呢?因此需要来防止无效的订单行产生,基于这样的情况,Steve Muench也在他的博客中描述了如何来避免这样问题的发生:Why Do I Get the InvalidOwnerException?

 

而在另外一些情况下,由于特殊的情况,需要在没有主记录存在的时候来创建从纪录,即需要将主从关系变为一种弱连接,允许进行

无主操作。

 

这个时候只要修改创建的实体关系的属性,将Composition Association选项去除即可,如下图:

 

entity_association

 

本文转自Oracle Seeker:http://oracleseeker.com/2008/11/19/why_get_invalidownerexception_master_detail_rowset/

原创粉丝点击