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