ModelException Nicht existierende Spalte existiert nicht
Posted: Fri Oct 28, 2011 4:17 pm
Hallo,
vorweg: Ich hab gerade auf Beta 5 geupdated, das Problem besteht aber immer noch. Und zwar bekomme ich seit ich LinkReferences benutze ModelExceptions. Das Programm funktioniert normal weiter.
An einem Beispiel:
Ich verbinde die Kunden View mit einer Vermittler Tabelle. Beim Kunden-Formular wird mir dadurch eine Combobox angelegt usw. Das DataBook der Kunden View ist "rdbCustomerData", das von den Agenten ist "rdbAgentData". Die Kunden View hat den Foreign-Key "agent_id" der auf die id der Agent-Tabelle zeigt. In "agent" steht dann der Initialwert. Ausschnitt der Kunden View:
Die ReferenceDefinition sieht folgendermaßen aus:
Wie gesagt funktioniert es so auch. Laden und Speichern ist alles kein Problem.
Trotzdem wird folgende Exception geworfen:
Es gibt nirgends eine Spalte "agent_name". Das selbe passiert auch bei einer LinkRef auf zwei andere Tabellen. Besonders eindrucksvoll ist wie JVx vom Feld "type" auf "type_type" kommt, oder von "account_manager" auf "account_manager_current_user".
JVx hat somit recht, diese Spalte gibt es nicht. Aber warum kommt dieser Fehler? Mache ich etwas in der Implementierung falsch oder könnte das ein Bug sein?
mfg
Benjamin
vorweg: Ich hab gerade auf Beta 5 geupdated, das Problem besteht aber immer noch. Und zwar bekomme ich seit ich LinkReferences benutze ModelExceptions. Das Programm funktioniert normal weiter.
An einem Beispiel:
Ich verbinde die Kunden View mit einer Vermittler Tabelle. Beim Kunden-Formular wird mir dadurch eine Combobox angelegt usw. Das DataBook der Kunden View ist "rdbCustomerData", das von den Agenten ist "rdbAgentData". Die Kunden View hat den Foreign-Key "agent_id" der auf die id der Agent-Tabelle zeigt. In "agent" steht dann der Initialwert. Ausschnitt der Kunden View:
- Code: Select all
CREATE OR REPLACE VIEW customer_data (
...
agent_id,
agent,
...
) AS SELECT
...
customer.agent_id,
(select name from agent where customer.agent_id = id) agent,
...
FROM
customer
...
Die ReferenceDefinition sieht folgendermaßen aus:
- Code: Select all
ReferenceDefinition referenceDef = new ReferenceDefinition();
referenceDef.setReferencedDataBook(rdbAgentData);
referenceDef.setColumnNames(new String[] {"AGENT_ID", "AGENT"});
referenceDef.setReferencedColumnNames(new String[] {"ID", "NAME"});
UILinkedCellEditor linkedCellEditor = new UILinkedCellEditor();
linkedCellEditor.setLinkReference(referenceDef);
linkedCellEditor.setTableHeaderVisible(false);
rdbCustomerData.getRowDefinition().getColumnDefinition("AGENT").getDataType().setCellEditor(linkedCellEditor);
Wie gesagt funktioniert es so auch. Laden und Speichern ist alles kein Problem.
Trotzdem wird folgende Exception geworfen:
- Code: Select all
28.10.2011 15:34:52 [ FINE ] com.sibvisions.rad.persist.jdbc.DBStorage getMetaData (Line: -1)
javax.rad.model.ModelException: Column 'AGENT_NAME' doesn't exists in MetaData!
at com.sibvisions.rad.persist.jdbc.ServerMetaData.getServerColumnMetaData(Unknown Source)
at com.sibvisions.rad.persist.jdbc.DBStorage.getMetaData(Unknown Source)
at com.sibvisions.rad.persist.jdbc.DBStorage.openInternal(Unknown Source)
at com.sibvisions.rad.persist.jdbc.DBStorage.open(Unknown Source)
at at.alladin.vms.server.CustomerManagement.getCustomerData(CustomerManagement.java:19)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sibvisions.rad.server.GenericBean.get(Unknown Source)
at com.sibvisions.rad.server.GenericBean.get(Unknown Source)
at at.alladin.vms.server.CustomerManagement.getCustomerData(CustomerManagement.java:8)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sibvisions.util.Reflective.call(Unknown Source)
at com.sibvisions.util.Reflective.call(Unknown Source)
at com.sibvisions.util.Reflective.call(Unknown Source)
at com.sibvisions.rad.server.DefaultObjectProvider.getObject(Unknown Source)
at com.sibvisions.rad.server.DefaultObjectProvider.invoke(Unknown Source)
at com.sibvisions.rad.server.AbstractSession.executeWithSessionContext(Unknown Source)
at com.sibvisions.rad.server.AbstractSession.executeIntern(Unknown Source)
at com.sibvisions.rad.server.AbstractSession.execute(Unknown Source)
at com.sibvisions.rad.server.Server.executeIntern(Unknown Source)
at com.sibvisions.rad.server.Server.execute(Unknown Source)
at com.sibvisions.rad.server.DirectServerConnection.call(Unknown Source)
at javax.rad.remote.AbstractConnection.call(Unknown Source)
at com.sibvisions.rad.model.remote.RemoteDataBook.initServerMetaData(Unknown Source)
at com.sibvisions.rad.model.remote.RemoteDataBook.open(Unknown Source)
at at.alladin.vms.client.panels.CustomerManagementPanel.<init>(CustomerManagementPanel.java:82)
at at.alladin.vms.client.VMSApplication.afterLogin(VMSApplication.java:160)
at com.sibvisions.rad.application.Application.doLogin(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at javax.rad.util.EventHandler$ListenerHandler.dispatchEvent(Unknown Source)
at javax.rad.util.EventHandler.dispatchEvent(Unknown Source)
at javax.rad.util.RuntimeEventHandler.dispatchEvent(Unknown Source)
at com.sibvisions.rad.ui.swing.impl.component.SwingAbstractButton.actionPerformed(Unknown Source)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicRootPaneUI$Actions.actionPerformed(Unknown Source)
at javax.swing.SwingUtilities.notifyAction(Unknown Source)
at javax.swing.JComponent.processKeyBinding(Unknown Source)
at javax.swing.KeyboardManager.fireBinding(Unknown Source)
at javax.swing.KeyboardManager.fireKeyboardAction(Unknown Source)
at javax.swing.JComponent.processKeyBindingsForAllComponents(Unknown Source)
at javax.swing.JComponent.processKeyBindings(Unknown Source)
at javax.swing.JComponent.processKeyEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Es gibt nirgends eine Spalte "agent_name". Das selbe passiert auch bei einer LinkRef auf zwei andere Tabellen. Besonders eindrucksvoll ist wie JVx vom Feld "type" auf "type_type" kommt, oder von "account_manager" auf "account_manager_current_user".
- Code: Select all
com.sibvisions.rad.persist.jdbc.DBStorage getMetaData (Line: -1)
javax.rad.model.ModelException: Column 'TYPE_TYPE' doesn't exists in MetaData!
at com.sibvisions.rad.persist.jdbc.ServerMetaData.getServerColumnMetaData(Unknown Source)
at com.sibvisions.rad.persist.jdbc.DBStorage.getMetaData(Unknown Source)
at com.sibvisions.rad.persist.jdbc.DBStorage.openInternal(Unknown Source)
at com.sibvisions.rad.persist.jdbc.DBStorage.open(Unknown Source)
at at.alladin.vms.server.CustomerManagement.getCustomerData(CustomerManagement.java:19)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sibvisions.rad.server.GenericBean.get(Unknown Source)
at com.sibvisions.rad.server.GenericBean.get(Unknown Source)
at at.alladin.vms.server.CustomerManagement.getCustomerData(CustomerManagement.java:8)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sibvisions.util.Reflective.call(Unknown Source)
at com.sibvisions.util.Reflective.call(Unknown Source)
at com.sibvisions.util.Reflective.call(Unknown Source)
at com.sibvisions.rad.server.DefaultObjectProvider.getObject(Unknown Source)
at com.sibvisions.rad.server.DefaultObjectProvider.invoke(Unknown Source)
at com.sibvisions.rad.server.AbstractSession.executeWithSessionContext(Unknown Source)
at com.sibvisions.rad.server.AbstractSession.executeIntern(Unknown Source)
at com.sibvisions.rad.server.AbstractSession.execute(Unknown Source)
at com.sibvisions.rad.server.Server.executeIntern(Unknown Source)
at com.sibvisions.rad.server.Server.execute(Unknown Source)
at com.sibvisions.rad.server.DirectServerConnection.call(Unknown Source)
at javax.rad.remote.AbstractConnection.call(Unknown Source)
at com.sibvisions.rad.model.remote.RemoteDataBook.initServerMetaData(Unknown Source)
at com.sibvisions.rad.model.remote.RemoteDataBook.open(Unknown Source)
at at.alladin.vms.client.panels.CustomerManagementPanel.<init>(CustomerManagementPanel.java:82)
at at.alladin.vms.client.VMSApplication.afterLogin(VMSApplication.java:160)
at com.sibvisions.rad.application.Application.doLogin(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at javax.rad.util.EventHandler$ListenerHandler.dispatchEvent(Unknown Source)
at javax.rad.util.EventHandler.dispatchEvent(Unknown Source)
at javax.rad.util.RuntimeEventHandler.dispatchEvent(Unknown Source)
at com.sibvisions.rad.ui.swing.impl.component.SwingAbstractButton.actionPerformed(Unknown Source)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicRootPaneUI$Actions.actionPerformed(Unknown Source)
at javax.swing.SwingUtilities.notifyAction(Unknown Source)
at javax.swing.JComponent.processKeyBinding(Unknown Source)
at javax.swing.KeyboardManager.fireBinding(Unknown Source)
at javax.swing.KeyboardManager.fireKeyboardAction(Unknown Source)
at javax.swing.JComponent.processKeyBindingsForAllComponents(Unknown Source)
at javax.swing.JComponent.processKeyBindings(Unknown Source)
at javax.swing.JComponent.processKeyEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
- Code: Select all
28.10.2011 15:34:52 [ FINE ] com.sibvisions.rad.persist.jdbc.DBStorage getMetaData (Line: -1)
javax.rad.model.ModelException: Column 'ACCOUNT_MANAGER_CURRENT_USER' doesn't exists in MetaData!
at com.sibvisions.rad.persist.jdbc.ServerMetaData.getServerColumnMetaData(Unknown Source)
at com.sibvisions.rad.persist.jdbc.DBStorage.getMetaData(Unknown Source)
at com.sibvisions.rad.persist.jdbc.DBStorage.openInternal(Unknown Source)
at com.sibvisions.rad.persist.jdbc.DBStorage.open(Unknown Source)
at at.alladin.vms.server.CustomerManagement.getCustomerData(CustomerManagement.java:19)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sibvisions.rad.server.GenericBean.get(Unknown Source)
at com.sibvisions.rad.server.GenericBean.get(Unknown Source)
at at.alladin.vms.server.CustomerManagement.getCustomerData(CustomerManagement.java:8)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sibvisions.util.Reflective.call(Unknown Source)
at com.sibvisions.util.Reflective.call(Unknown Source)
at com.sibvisions.util.Reflective.call(Unknown Source)
at com.sibvisions.rad.server.DefaultObjectProvider.getObject(Unknown Source)
at com.sibvisions.rad.server.DefaultObjectProvider.invoke(Unknown Source)
at com.sibvisions.rad.server.AbstractSession.executeWithSessionContext(Unknown Source)
at com.sibvisions.rad.server.AbstractSession.executeIntern(Unknown Source)
at com.sibvisions.rad.server.AbstractSession.execute(Unknown Source)
at com.sibvisions.rad.server.Server.executeIntern(Unknown Source)
at com.sibvisions.rad.server.Server.execute(Unknown Source)
at com.sibvisions.rad.server.DirectServerConnection.call(Unknown Source)
at javax.rad.remote.AbstractConnection.call(Unknown Source)
at com.sibvisions.rad.model.remote.RemoteDataBook.initServerMetaData(Unknown Source)
at com.sibvisions.rad.model.remote.RemoteDataBook.open(Unknown Source)
at at.alladin.vms.client.panels.CustomerManagementPanel.<init>(CustomerManagementPanel.java:82)
at at.alladin.vms.client.VMSApplication.afterLogin(VMSApplication.java:160)
at com.sibvisions.rad.application.Application.doLogin(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at javax.rad.util.EventHandler$ListenerHandler.dispatchEvent(Unknown Source)
at javax.rad.util.EventHandler.dispatchEvent(Unknown Source)
at javax.rad.util.RuntimeEventHandler.dispatchEvent(Unknown Source)
at com.sibvisions.rad.ui.swing.impl.component.SwingAbstractButton.actionPerformed(Unknown Source)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.AbstractButton.doClick(Unknown Source)
at javax.swing.plaf.basic.BasicRootPaneUI$Actions.actionPerformed(Unknown Source)
at javax.swing.SwingUtilities.notifyAction(Unknown Source)
at javax.swing.JComponent.processKeyBinding(Unknown Source)
at javax.swing.KeyboardManager.fireBinding(Unknown Source)
at javax.swing.KeyboardManager.fireKeyboardAction(Unknown Source)
at javax.swing.JComponent.processKeyBindingsForAllComponents(Unknown Source)
at javax.swing.JComponent.processKeyBindings(Unknown Source)
at javax.swing.JComponent.processKeyEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.KeyboardFocusManager.redispatchEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
JVx hat somit recht, diese Spalte gibt es nicht. Aber warum kommt dieser Fehler? Mache ich etwas in der Implementierung falsch oder könnte das ein Bug sein?
mfg
Benjamin