Skip to Main Content

Java Development Tools

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

BUG in ADF11: SQL derived attribute on an entity

David KlikaFeb 27 2009 — edited Feb 27 2009
Hello!

I think we got into troubles because of a bug in base EntityImpl. We use JDev 11g december 2008 release.

If we define a simple transient (read only) attribute derived from a SQL query (SELECT 1 FROM DUAL for example) and use such entity in an editable view (the attribute may or may not be used in the view, the behavior is the same), we get this exception when we want to edit data in the view:

oracle.jbo.DMLException: JBO-26080: Chyba při výběru entity pro Employees
at oracle.jbo.server.OracleSQLBuilderImpl.doEntitySelectForAltKey(OracleSQLBuilderImpl.java:1117)
at oracle.jbo.server.BaseSQLBuilderImpl.doEntitySelect(BaseSQLBuilderImpl.java:549)
at oracle.jbo.server.EntityImpl.doSelect(EntityImpl.java:7612)
at oracle.jbo.server.EntityImpl.lock(EntityImpl.java:5420)
at oracle.jbo.server.EntityImpl.setAttributeValueInternal(EntityImpl.java:3242)
at oracle.jbo.server.EntityImpl.setAttributeValue(EntityImpl.java:3131)
at oracle.jbo.server.AttributeDefImpl.set(AttributeDefImpl.java:2676)
at oracle.jbo.server.EntityImpl.setAttributeInternal(EntityImpl.java:1687)
at oracle.jbo.server.AttributeDefImpl.resolveSet(AttributeDefImpl.java:2885)
at oracle.jbo.server.EntityImpl.setAttrInvokeAccessor(EntityImpl.java:1668)
at oracle.jbo.server.EntityImpl.setAttribute(EntityImpl.java:1595)
at oracle.jbo.server.ViewRowStorage.setAttributeValue(ViewRowStorage.java:1959)
at oracle.jbo.server.ViewRowStorage.setAttributeInternal(ViewRowStorage.java:1803)
at oracle.jbo.server.ViewRowImpl.setAttributeInternal(ViewRowImpl.java:1266)
at oracle.jbo.server.ViewRowImpl.setAttrInvokeAccessor(ViewRowImpl.java:1241)
at oracle.jbo.server.ViewRowImpl.setAttribute(ViewRowImpl.java:984)
at oracle.adf.model.binding.DCDataControl.setAttributeInRow(DCDataControl.java:2313)
at oracle.adf.model.bc4j.DCJboDataControl.setAttributeInRow(DCJboDataControl.java:2620)
at oracle.jbo.uicli.binding.JUCtrlValueBinding.setAttributeInRow(JUCtrlValueBinding.java:1047)
at oracle.jbo.uicli.binding.JUCtrlValueBinding.setAttribute(JUCtrlValueBinding.java:1331)
at oracle.jbo.uicli.binding.JUCtrlValueBinding.compareAndSetAttribute(JUCtrlValueBinding.java:3023)
at oracle.jbo.uicli.jui.JUSVUpdateableFocusAdapter.focusLost(JUSVUpdateableFocusAdapter.java:92)
at java.awt.AWTEventMulticaster.focusLost(AWTEventMulticaster.java:213)
at java.awt.Component.processFocusEvent(Component.java:5933)
at java.awt.Component.processEvent(Component.java:5797)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4413)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1848)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:882)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:555)
at java.awt.Component.dispatchEventImpl(Component.java:4285)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Caused by: java.sql.SQLException: ORA-00936: chybí výraz

at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:74)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:110)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:171)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:455)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:413)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1030)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:194)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:785)
at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:860)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1186)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3381)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3425)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1202)
at oracle.jbo.server.OracleSQLBuilderImpl.doEntitySelectForAltKey(OracleSQLBuilderImpl.java:870)
... 41 more
## Detail 0 ##
java.sql.SQLException: ORA-00936: chybí výraz

at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:74)
at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:110)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:171)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:455)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:413)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1030)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:194)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:785)
at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:860)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1186)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3381)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3425)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1202)
at oracle.jbo.server.OracleSQLBuilderImpl.doEntitySelectForAltKey(OracleSQLBuilderImpl.java:870)
at oracle.jbo.server.BaseSQLBuilderImpl.doEntitySelect(BaseSQLBuilderImpl.java:549)
at oracle.jbo.server.EntityImpl.doSelect(EntityImpl.java:7612)
at oracle.jbo.server.EntityImpl.lock(EntityImpl.java:5420)
at oracle.jbo.server.EntityImpl.setAttributeValueInternal(EntityImpl.java:3242)
at oracle.jbo.server.EntityImpl.setAttributeValue(EntityImpl.java:3131)
at oracle.jbo.server.AttributeDefImpl.set(AttributeDefImpl.java:2676)
at oracle.jbo.server.EntityImpl.setAttributeInternal(EntityImpl.java:1687)
at oracle.jbo.server.AttributeDefImpl.resolveSet(AttributeDefImpl.java:2885)
at oracle.jbo.server.EntityImpl.setAttrInvokeAccessor(EntityImpl.java:1668)
at oracle.jbo.server.EntityImpl.setAttribute(EntityImpl.java:1595)
at oracle.jbo.server.ViewRowStorage.setAttributeValue(ViewRowStorage.java:1959)
at oracle.jbo.server.ViewRowStorage.setAttributeInternal(ViewRowStorage.java:1803)
at oracle.jbo.server.ViewRowImpl.setAttributeInternal(ViewRowImpl.java:1266)
at oracle.jbo.server.ViewRowImpl.setAttrInvokeAccessor(ViewRowImpl.java:1241)
at oracle.jbo.server.ViewRowImpl.setAttribute(ViewRowImpl.java:984)
at oracle.adf.model.binding.DCDataControl.setAttributeInRow(DCDataControl.java:2313)
at oracle.adf.model.bc4j.DCJboDataControl.setAttributeInRow(DCJboDataControl.java:2620)
at oracle.jbo.uicli.binding.JUCtrlValueBinding.setAttributeInRow(JUCtrlValueBinding.java:1047)
at oracle.jbo.uicli.binding.JUCtrlValueBinding.setAttribute(JUCtrlValueBinding.java:1331)
at oracle.jbo.uicli.binding.JUCtrlValueBinding.compareAndSetAttribute(JUCtrlValueBinding.java:3023)
at oracle.jbo.uicli.jui.JUSVUpdateableFocusAdapter.focusLost(JUSVUpdateableFocusAdapter.java:92)
at java.awt.AWTEventMulticaster.focusLost(AWTEventMulticaster.java:213)
at java.awt.Component.processFocusEvent(Component.java:5933)
at java.awt.Component.processEvent(Component.java:5797)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4413)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1848)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:882)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:555)
at java.awt.Component.dispatchEventImpl(Component.java:4285)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

I thing the problem is in locking of the record.
Thank you for any comments.

David
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Mar 27 2009
Added on Feb 27 2009
5 comments
552 views