I'm running into a runtime exception when trying to manually update a FK field in a VO. I created a new ID field (RStatusId) in a pre-existing table that is a FK to another table. I synced the EO in JDev to bring in this ID field. I added the ID field in the VO and also added an EO reference on the foreign table for which this ID is a foreign key to, so that I could also display values from the foreign table.
I've attempt to set the value of the RStatusId two ways in the backing bean but they both result in an exception being thrown.
javax.el.ELException: /WEB-INF/fragments/createIr.jsff @2095,244 actionListener="#{pageFlowScope.IrBean.saveAndClosePromoteDemotePopup}": oracle.adfinternal.view.faces.util.ReportableImpl: oracle.jbo.AttrSetValException: JBO-27020: The set method for attribute "RStatusId" in Inspection Record VO cannot be resolved.
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:111)
at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:147)
at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
at org.apache.myfaces.trinidad.component.UIXComponentBase.broadcast(UIXComponentBase.java:1127)
at org.apache.myfaces.trinidad.component.UIXCommand.broadcast(UIXCommand.java:179)
at org.apache.myfaces.trinidad.component.UIXComponent.broadcastInContext(UIXComponent.java:364)
at org.apache.myfaces.trinidad.component.WrapperEvent.broadcastWrappedEvent(WrapperEvent.java:82)
at org.apache.myfaces.trinidad.component.UIXCollection.broadcast(UIXCollection.java:195)
at org.apache.myfaces.trinidad.component.UIXListView.broadcast(UIXListView.java:150)
at org.apache.myfaces.trinidad.component.UIXComponent.broadcastInContext(UIXComponent.java:364)
at org.apache.myfaces.trinidad.component.WrapperEvent.broadcastWrappedEvent(WrapperEvent.java:82)
at org.apache.myfaces.trinidad.component.UIXCollection.broadcast(UIXCollection.java:176)
at org.apache.myfaces.trinidad.component.UIXListView.broadcast(UIXListView.java:150)
at org.apache.myfaces.trinidad.component.UIXComponent.broadcastInContext(UIXComponent.java:364)
at oracle.adf.view.rich.event.ProxyEvent.broadcastWrappedEvent(ProxyEvent.java:72)
at oracle.adf.view.rich.component.fragment.UIXRegion._handleProxyEvent(UIXRegion.java:933)
at oracle.adf.view.rich.component.fragment.UIXRegion.broadcast(UIXRegion.java:117)
at org.apache.myfaces.trinidad.component.UIXComponent.broadcastInContext(UIXComponent.java:364)
at oracle.adf.view.rich.event.ProxyEvent.broadcastWrappedEvent(ProxyEvent.java:72)
at oracle.adf.view.rich.component.fragment.UIXRegion._handleProxyEvent(UIXRegion.java:933)
at oracle.adf.view.rich.component.fragment.UIXRegion.broadcast(UIXRegion.java:117)
at org.apache.myfaces.trinidad.component.UIXComponent.broadcastInContext(UIXComponent.java:364)
at org.apache.myfaces.trinidad.component.WrapperEvent.broadcastWrappedEvent(WrapperEvent.java:82)
at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent$1.run(ContextSwitchingComponent.java:168)
at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent._processPhase(ContextSwitchingComponent.java:510)
at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent.broadcast(ContextSwitchingComponent.java:171)
at org.apache.myfaces.trinidad.component.UIXComponent.broadcastInContext(UIXComponent.java:364)
at org.apache.myfaces.trinidad.component.WrapperEvent.broadcastWrappedEvent(WrapperEvent.java:82)
at oracle.adf.view.rich.component.fragment.UIXInclude.broadcast(UIXInclude.java:111)
at org.apache.myfaces.trinidad.component.UIXComponent.broadcastInContext(UIXComponent.java:364)
at org.apache.myfaces.trinidad.component.WrapperEvent.broadcastWrappedEvent(WrapperEvent.java:82)
at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent$1.run(ContextSwitchingComponent.java:168)
at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent._processPhase(ContextSwitchingComponent.java:510)
at oracle.adf.view.rich.component.fragment.ContextSwitchingComponent.broadcast(ContextSwitchingComponent.java:171)
at oracle.adf.view.rich.component.fragment.UIXInclude.broadcast(UIXInclude.java:115)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)
at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)
at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._invokeApplication(LifecycleImpl.java:1243)
at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executeInvokeApplication(LifecycleImpl.java:686)
at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:364)
at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:227)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:650)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:286)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:260)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:137)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:350)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:25)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:207)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
at oracle.adfinternal.view.faces.webapp.rich.RegistrationFilter.doFilter(RegistrationFilter.java:105)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:529)
at oracle.adfinternal.view.faces.activedata.AdsFilter.doFilter(AdsFilter.java:60)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:529)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:354)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:232)
at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
at oracle.adf.library.webapp.LibraryFilter.doFilter(LibraryFilter.java:169)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:141)
at java.security.AccessController.doPrivileged(Native Method)
at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:315)
at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:650)
at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:124)
at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:232)
at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:94)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:248)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:32)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:78)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3683)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3649)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:326)
at weblogic.security.service.SecurityManager.runAsForUserCode(SecurityManager.java:197)
at weblogic.servlet.provider.WlsSecurityProvider.runAsForUserCode(WlsSecurityProvider.java:203)
at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:71)
at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2433)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2281)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2259)
at weblogic.servlet.internal.ServletRequestImpl.runInternal(ServletRequestImpl.java:1691)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1651)
at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:270)
at weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:348)
at weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:333)
at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:54)
at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41)
at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:640)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:406)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:346)
Caused by: oracle.adfinternal.view.faces.util.ReportableImpl: oracle.jbo.AttrSetValException: JBO-27020: The set method for attribute "RStatusId" in Inspection Record VO cannot be resolved.
at oracle.adfinternal.view.faces.model.binding.FacesCtrlAttrsBinding._postSetValue(FacesCtrlAttrsBinding.java:200)
at oracle.adfinternal.view.faces.model.binding.FacesCtrlAttrsBinding.setInputValue(FacesCtrlAttrsBinding.java:162)
at fnd.util.ADFUtils.setBoundAttributeValue(ADFUtils.java:97)
at qars.view.backing.IrBean.updateIRStatus(IrBean.java:5494)
at qars.view.backing.IrBean.validateAndPromoteDemoteDi(IrBean.java:4663)
at qars.view.backing.IrBean.saveAndClosePromoteDemotePopup(IrBean.java:4607)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.sun.el.util.ReflectionUtil.invokeMethod(ReflectionUtil.java:181)
at com.sun.el.parser.AstValue.invoke(AstValue.java:289)
at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:304)
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
... 90 more
Caused by: oracle.jbo.AttrSetValException: JBO-29114 ADFContext is not setup to process messages for this exception. Use the exception stack trace and error code to investigate the root cause of this exception. Root cause error code is JBO-27020. Error message parameters are {0=Entity Object, 1=QarsMasterAppModule.QARS_AppModule.InspectionRecordVO, 2=RStatusId, 3=712}
at oracle.jbo.server.EntityImpl.setAttribute(EntityImpl.java:2230)
at oracle.jbo.server.ViewRowStorage.setAttributeValue(ViewRowStorage.java:2554)
at oracle.jbo.server.ViewRowStorage.setAttributeInternal(ViewRowStorage.java:2354)
at oracle.jbo.server.ViewRowImpl.setAttributeInternal(ViewRowImpl.java:1691)
at qars.model.views.InspectionRecordVORowImpl.setRStatusId(InspectionRecordVORowImpl.java:1645)
at qars.model.views.InspectionRecordVORowImpl$AttributesEnum$60.put(InspectionRecordVORowImpl.java:634)
at qars.model.views.InspectionRecordVORowImpl.setAttrInvokeAccessor(InspectionRecordVORowImpl.java:2434)
at oracle.jbo.server.ViewRowImpl.setAttribute(ViewRowImpl.java:1238)
at oracle.adf.model.binding.DCDataControl.setAttributeInRowTransient(DCDataControl.java:2616)
at oracle.adf.model.binding.DCDataControl.setAttributeInRow(DCDataControl.java:2577)
at oracle.adf.model.bc4j.DCJboDataControl.setAttributeInRow(DCJboDataControl.java:2962)
at oracle.jbo.uicli.binding.JUCtrlValueBinding.setAttributeInRow(JUCtrlValueBinding.java:1210)
at oracle.jbo.uicli.binding.JUCtrlValueBinding.setInputValueInRow(JUCtrlValueBinding.java:3085)
at oracle.jbo.uicli.binding.JUCtrlValueBinding.setInputValue(JUCtrlValueBinding.java:3059)
at oracle.jbo.uicli.binding.JUCtrlValueBinding.setInputValue(JUCtrlValueBinding.java:3022)
at oracle.adfinternal.view.faces.model.binding.FacesCtrlAttrsBinding.setInputValue(FacesCtrlAttrsBinding.java:161)
... 102 more
Caused by: java.lang.UnsupportedOperationException: No Data In this Entry
at oracle.binding.DataChangeEntry.getAttributeValue(DataChangeEntry.java:122)
at oracle.binding.DataChangeEntry.getFormattedAttributeValue(DataChangeEntry.java:137)
at oracle.jbo.uicli.binding.JUCtrlValueBinding$BindingDataChangeEvent$BindingDataChangeEntry.getFormattedAttributeValue(JUCtrlValueBinding.java:4557)
at oracle.adfinternal.view.faces.activedata.AttrsActiveDataEntryImpl.getFormattedAttributeValue(AttrsActiveDataEntryImpl.java:83)
at oracle.adf.view.rich.activedata.ActiveComponentContext$AttributeActiveDataEncoder.encode(ActiveComponentContext.java:961)
at oracle.adfinternal.view.faces.activedata.PageDataUpdateManager$EncoderAdapter.accept(PageDataUpdateManager.java:1704)
at oracle.adfinternal.view.faces.activedata.PageDataUpdateManager$ActiveComponentRecord._processActiveDataEvent(PageDataUpdateManager.java:1551)
at oracle.adfinternal.view.faces.activedata.PageDataUpdateManager$ActiveComponentRecord.dataChanged(PageDataUpdateManager.java:1407)
at oracle.adfinternal.view.faces.activedata.AttrsActiveDataModelImpl.dataChanged(AttrsActiveDataModelImpl.java:164)
at oracle.jbo.uicli.binding.JUCtrlValueBinding.createAndNotifyDCE(JUCtrlValueBinding.java:373)
at oracle.jbo.uicli.binding.JUCtrlValueBinding.updateRow(JUCtrlValueBinding.java:426)
at oracle.jbo.uicli.binding.JUIteratorBinding.notifyUpdateEvent(JUIteratorBinding.java:377)
at oracle.adf.model.binding.DCIteratorBinding.rowUpdated(DCIteratorBinding.java:1381)
at oracle.jbo.common.RowSetHelper.fireRowUpdated(RowSetHelper.java:250)
at oracle.jbo.server.ViewRowSetIteratorImpl.fireRowUpdated(ViewRowSetIteratorImpl.java:3892)
at oracle.jbo.server.ViewRowSetIteratorImpl.notifyRowUpdated(ViewRowSetIteratorImpl.java:3499)
at oracle.jbo.server.ViewRowSetImpl.notifyRowUpdated(ViewRowSetImpl.java:2379)
at oracle.jbo.server.ViewObjectImpl.notifyRowUpdated(ViewObjectImpl.java:14036)
at oracle.jbo.server.ViewObjectImpl.notifyRowUpdated(ViewObjectImpl.java:13974)
at oracle.jbo.server.ViewObjectImpl.afterRowUpdate(ViewObjectImpl.java:15847)
at oracle.jbo.server.ViewObjectImpl.sourceChanged(ViewObjectImpl.java:16074)
at oracle.jbo.server.EntityCache.sendEvent(EntityCache.java:1702)
at oracle.jbo.server.EntityCache.deliverEntityEvent(EntityCache.java:1718)
at oracle.jbo.server.EntityCache.notifyColumnAndBlgChange(EntityCache.java:1776)
at oracle.jbo.server.EntityImpl.notifyAttributesChanged(EntityImpl.java:8162)
at oracle.jbo.server.EntityImpl.notifyAttributesChanged(EntityImpl.java:8143)
at oracle.jbo.server.EntityImpl.notifyAttributesAndBlgChanged(EntityImpl.java:8152)
at oracle.jbo.server.EntityImpl.setAttributeValue(EntityImpl.java:4128)
at oracle.jbo.server.AttributeDefImpl.set(AttributeDefImpl.java:3920)
at oracle.jbo.server.EntityImpl.setAttributeInternal(EntityImpl.java:2269)
at qars.model.entities.InspectionRecordEOImpl.setRStatusId(InspectionRecordEOImpl.java:1373)
at qars.model.entities.InspectionRecordEOImpl$AttributesEnum$32.put(InspectionRecordEOImpl.java:494)
at qars.model.entities.InspectionRecordEOImpl.setAttrInvokeAccessor(InspectionRecordEOImpl.java:1420)
at oracle.jbo.server.EntityImpl.setAttribute(EntityImpl.java:2177)
... 117 more
I noticed that I do not get this error if I take the EO reference of the foreign table, that RStatusId is a foreign key on, out of the VO. Can someone please point out what I'm doing wrong? This seems like such a trivial thing.