Hi Hubert,

can you please create a new issue at jira and attach a minimal test case to reproduce the problem. We would prefer if you could follow:

http://castor.org/how-to-submit-a-bug.html

Regards
Ralf


[EMAIL PROTECTED] schrieb:
Hello,
i encountered the following exception while using castor 1.1 on an Oracle 10g database: SCHWERWIEGEND (= fatal): A fatal error occurred while loading de.hbo.test.castor3.ClassB using SQL: SELECT "CLASSC1"."ID","CLASSC2"."ID" FROM "CLASSB","CLASSC2","CLASSC1" WHERE "CLASSB"."ID"="CLASSC1"."ID"(+) AND "CLASSB"."ID"="CLASSC2"."ID"(+) AND "CLASSB"."ID"=?
java.sql.SQLException: Ungültiger Spaltenindex (=invalid column index)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:111) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:145) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:207) at oracle.jdbc.driver.OracleResultSetImpl.getObject(OracleResultSetImpl.java:896)
 at org.castor.jdo.engine.SQLTypeInfos.getValue(SQLTypeInfos.java:265)
at org.exolab.castor.jdo.engine.SQLHelper.calculateNumberOfFields(SQLHelper.java:73) at org.exolab.castor.jdo.engine.SQLStatementLoad.executeStatement(SQLStatementLoad.java:304)
 at org.exolab.castor.jdo.engine.SQLEngine.load(SQLEngine.java:349)
 at org.exolab.castor.persist.ClassMolder.loadFields(ClassMolder.java:565)
 at org.exolab.castor.persist.ClassMolder.load(ClassMolder.java:614)
 at org.exolab.castor.persist.LockEngine.load(LockEngine.java:396)
at org.castor.persist.AbstractTransactionContext.load(AbstractTransactionContext.java:568) at org.castor.persist.AbstractTransactionContext.load(AbstractTransactionContext.java:431) at org.castor.persist.resolver.PersistanceCapableRelationResolver.load(PersistanceCapableRelationResolver.java:432)
 at org.exolab.castor.persist.ClassMolder.load(ClassMolder.java:638)
 at org.exolab.castor.persist.LockEngine.load(LockEngine.java:396)
at org.castor.persist.AbstractTransactionContext.load(AbstractTransactionContext.java:568) at org.castor.persist.AbstractTransactionContext.load(AbstractTransactionContext.java:431) at org.exolab.castor.jdo.engine.AbstractDatabaseImpl.load(AbstractDatabaseImpl.java:301) at org.exolab.castor.jdo.engine.AbstractDatabaseImpl.load(AbstractDatabaseImpl.java:248)
 at de.hbo.test.castor3.TestAppl.start(TestAppl.java:32)
 at de.hbo.test.castor3.TestAppl.main(TestAppl.java:14)
As far as i could see at org.castor.jdo.engine.SQLTypeInfos.getValue(SQLTypeInfos.java:265) Castor's trying to access the third column of the resultset of the SQL-statement above, which of course isn't there.
my mapping:
     <class name="de.hbo.test.castor3.ClassA" identity="id">
<map-to table="CLASSA" /> <field name="id" type="integer" >
           <sql name="id" type="integer" />
         </field>
<field name="mother" type="de.hbo.test.castor3.ClassB" >
           <sql name="motherid"/>
         </field>
<field name="father" type="de.hbo.test.castor3.ClassB" >
           <sql name="fatherid"/>
         </field>
     </class>
<class name="de.hbo.test.castor3.ClassB" identity="id"> <map-to table="CLASSB" /> <field name="id" type="integer" >
           <sql name="id" type="integer" />
         </field>
     </class>
<class name="de.hbo.test.castor3.ClassC1" identity="id" extends="de.hbo.test.castor3.ClassB"> <map-to table="CLASSC1" /> <field name="id" type="integer" >
           <sql name="id" type="integer" />
         </field>
     </class>
<class name="de.hbo.test.castor3.ClassC2" identity="id" extends="de.hbo.test.castor3.ClassB"> <map-to table="CLASSC2" /> <field name="id" type="integer" >
           <sql name="id" type="integer" />
         </field>
     </class>
my database entries:
select * from classa; ID MOTHERID FATHERID
     ---------- ---------- ----------
              1          1          2
select * from classb; ID
     ----------
              1
              2
select * from classc1; ID
     ----------
              1
select * from classc2; ID
     ----------
              2
my source code: ... Database db = jdoManager.getDatabase(); db.begin(); ClassA klasse = (ClassA)db.load(ClassA.class, new Integer(1)); db.commit(); Changing the mapping of ClassA as follows, everything works just fine: <class name="de.hbo.test.castor3.ClassA" identity="id"> ... <field name="mother" type="de.hbo.test.castor3.ClassC1" >
           <sql name="motherid"/>
         </field>
<field name="father" type="de.hbo.test.castor3.ClassC2 >
           <sql name="fatherid"/>
         </field>
</class>
Thanks in advance,
Hubert.

--

Syscon Ingenieurbüro für Meß- und Datentechnik GmbH
Ralf Joachim
Raiffeisenstraße 11
72127 Kusterdingen
Germany

Tel.   +49 7071 3690 52
Mobil: +49 173 9630135
Fax    +49 7071 3690 98

Internet: www.syscon.eu
E-Mail: [EMAIL PROTECTED]

Sitz der Gesellschaft: D-72127 Kusterdingen
Registereintrag: Amtsgericht Stuttgart, HRB 382295
Geschäftsleitung: Jens Joachim, Ralf Joachim

---------------------------------------------------------------------
To unsubscribe from this list please visit:

   http://xircles.codehaus.org/manage_email

Reply via email to