[OJB-developers] Problems with proxyReference: Field type mismatch
Brought to you by:
thma
From: <ubu...@ya...> - 2002-04-16 16:49:57
|
Hello everybody out there in happy-ojb-country ;) I switched my project to the latetest release 0.8.735 und i like it a lot, especially the new collectionProxy feature. However, i found a problem with proxyReference("java.lang.IllegalArgumentException: field type mismatch"), which i was able to reproduce with a new Test in ProxyExample.java. I was not able to solve the problem, but i collected some information which is hopefully useful for you. 1.) detailed error message 2.) new test in RandomProxy 3.) definitions from repository_junit.xml 4.) ArticleWProxyReference.java (attached) 5.) ProductGroupWProxyReference (attached) maybe somebody could help me... cu Uli 1.) detailed error message [junit] ...[DEFAULT] ERROR: field type mismatch [junit] java.lang.IllegalArgumentException: field type mismatch [junit] at java.lang.reflect.Field.set(Native Method) [junit] at ojb.broker.metadata.PersistentFieldDefaultImpl.set(PersistentFieldDefaultImpl.java:114) [junit] at ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReference(PersistenceBrokerImpl.java:539) [junit] at ojb.broker.singlevm.PersistenceBrokerImpl.retrieveReferences(PersistenceBrokerImpl.java:510) [junit] at ojb.broker.singlevm.PersistenceBrokerImpl.getDBObject(PersistenceBrokerImpl.java:1100) [junit] at ojb.broker.singlevm.PersistenceBrokerImpl.getObjectByIdentity(PersistenceBrokerImpl.java:1181) [junit] at test.ojb.broker.ProxyExamples.testReferenceProxies(ProxyExamples.java:295) [junit] at java.lang.reflect.Method.invoke(Native Method) [junit] at junit.framework.TestCase.runTest(TestCase.java:166) [junit] at junit.framework.TestCase.runBare(TestCase.java:140) [junit] at junit.framework.TestResult$1.protect(TestResult.java:106) [junit] at junit.framework.TestResult.runProtected(TestResult.java:124) [junit] at junit.framework.TestResult.run(TestResult.java:109) [junit] at junit.framework.TestCase.run(TestCase.java:131) [junit] at junit.framework.TestSuite.runTest(TestSuite.java:173) [junit] at junit.framework.TestSuite.run(TestSuite.java:168) [junit] at junit.framework.TestSuite.runTest(TestSuite.java:173) [junit] [DEFAULT] ERROR: field: productGroup, type: interface test.ojb.broker.InterfaceProductGroup [junit] [DEFAULT] ERROR: value: ---- [junit] group Id: 1 [junit] name: Beverages [junit] description: Alles leckere zum S³ffeln [junit] articles in group: null, type: class $Proxy0 [junit] at junit.framework.TestSuite.run(TestSuite.java:168) [junit] at junit.textui.TestRunner.doRun(TestRunner.java:74) [junit] at junit.textui.TestRunner.start(TestRunner.java:234) [junit] [ojb.broker.singlevm.PersistenceBrokerImpl] ERROR: expected type: interface test.ojb.broker.InterfaceProduct Group [junit] [ojb.broker.singlevm.PersistenceBrokerImpl] ERROR: actual type: class $Proxy0 2.) new test in RandomProxy public void testReferenceProxies() { try { Object[] pkvals = new Object[1]; pkvals[0] = new Integer(2); Identity id = new Identity( ArticleWProxyReference.class, pkvals); ArticleWProxyReference awpr = (ArticleWProxyReference)broker.getObjectByIdentity(id); assertNotNull( "awpr is null", awpr); assertEquals( "awpr.pgid", 1, awpr.getProductGroupId()); InterfaceProductGroup pg = awpr.getProductGroup(); assertNotNull( "ProductGroup is null", pg); } catch (Throwable t) { t.printStackTrace(); fail(t.getMessage()); } } 3.) definitions from repository_junit.xml <!-- Definitions for test.ojb.broker.Article --> <ClassDescriptor id="142"> <class.name>test.ojb.broker.ArticleWProxyReference</class.name> <table.name>Artikel</table.name> <FieldDescriptor id="1"> <field.name>articleId</field.name> <column.name>Artikel_Nr</column.name> <jdbc_type>INTEGER</jdbc_type> <PrimaryKey>true</PrimaryKey> <autoincrement>true</autoincrement> </FieldDescriptor> <FieldDescriptor id="2"> <field.name>articleName</field.name> <column.name>Artikelname</column.name> <jdbc_type>VARCHAR</jdbc_type> </FieldDescriptor> <FieldDescriptor id="3"> <field.name>supplierId</field.name> <column.name>Lieferanten_Nr</column.name> <jdbc_type>INTEGER</jdbc_type> </FieldDescriptor> <FieldDescriptor id="4"> <field.name>productGroupId</field.name> <column.name>Kategorie_Nr</column.name> <jdbc_type>INTEGER</jdbc_type> </FieldDescriptor> <FieldDescriptor id="5"> <field.name>unit</field.name> <column.name>Liefereinheit</column.name> <jdbc_type>VARCHAR</jdbc_type> </FieldDescriptor> <FieldDescriptor id="6"> <field.name>price</field.name> <column.name>Einzelpreis</column.name> <jdbc_type>FLOAT</jdbc_type> </FieldDescriptor> <FieldDescriptor id="7"> <field.name>stock</field.name> <column.name>Lagerbestand</column.name> <jdbc_type>INTEGER</jdbc_type> </FieldDescriptor> <FieldDescriptor id="8"> <field.name>orderedUnits</field.name> <column.name>BestellteEinheiten</column.name> <jdbc_type>INTEGER</jdbc_type> </FieldDescriptor> <FieldDescriptor id="9"> <field.name>minimumStock</field.name> <column.name>MindestBestand</column.name> <jdbc_type>INTEGER</jdbc_type> </FieldDescriptor> <ReferenceDescriptor id="1"> <proxyReference>true</proxyReference> <rdfield.name>productGroup</rdfield.name> <referenced.class>test.ojb.broker.ProductGroupWProxyReference</referenced.class> <fk_descriptor_ids>4</fk_descriptor_ids> </ReferenceDescriptor> </ClassDescriptor> <!-- Definitions for test.ojb.broker.ProductGroupWProxyReference --> <ClassDescriptor id="143"> <class.name>test.ojb.broker.ProductGroupWProxyReference</class.name> <table.name>Kategorien</table.name> <FieldDescriptor id="1"> <field.name>groupId</field.name> <column.name>Kategorie_Nr</column.name> <jdbc_type>INTEGER</jdbc_type> <PrimaryKey>true</PrimaryKey> <autoincrement>true</autoincrement> </FieldDescriptor> <FieldDescriptor id="2"> <field.name>groupName</field.name> <column.name>KategorieName</column.name> <jdbc_type>VARCHAR</jdbc_type> </FieldDescriptor> <FieldDescriptor id="3"> <field.name>description</field.name> <column.name>Beschreibung</column.name> <jdbc_type>VARCHAR</jdbc_type> </FieldDescriptor> </ClassDescriptor> __________________________________________________________________ Gesendet von Yahoo! Mail - http://mail.yahoo.de Sie brauchen mehr Speicher für Ihre E-Mails? - http://premiummail.yahoo.de |