The repository snipplet looks quite similar to mine. I post the original
code snipplets of the repository and the query, just to make sure, that
I haven't forgotten anything.
(TestRun <=> TestLauf, TestStep <=> TestSchritt/TestSchrittXDE)

I've tried different combinations for the query
(i.e. ("testLauf", "testLaufId") as 1st Parameter of addEqualTo or
(lauf, new Identity(lauf, broker)) as 2nd Parameter), but I always
get a SQL exception (Ung�ltiger Spaltentyp <=> invalid rowtype),
which means that the OJB tries to bind the TestLauf-Object with
PreparedStatement.setObject().

Thank you for your help,
Andreas.

*************************************************************
Query-Snipplet:

private static Iterator getTestSchrittIterator(PersistenceBroker broker, 
TestLauf lauf) {
  Criteria schrittKat = new Criteria();

  // ... some inner join criterias ...

  Criteria schrittCrit = new Criteria();
  // works
  schrittCrit.addEqualTo("testLauf", new Identity(lauf, 
broker).getPrimaryKeyValues()[0]);
  // ... doesn't
  // schrittCrit.addEqualTo("testLauf", lauf);
  schrittCrit.addAndCriteria(schrittKat);

  QueryByCriteria schrittQuery = QueryFactory.newQuery(TestSchrittXDE.class, 
schrittCrit);
  schrittQuery.setDistinct(true);

  return broker.getIteratorByQuery(schrittQuery);
}

*************************************************************
Repository-Snipplet:

<class-descriptor
  class="de.wwk.voran.apps.common.model.test.TestLauf"
  table="TestLauf">
  <field-descriptor
    name="testLaufId"
    column="testLaufId"
    jdbc-type="INTEGER"
    primarykey="true"
    autoincrement="true"
    access="anonymous"/>
  <!-- ... -->
</class-descriptor>
<class-descriptor
  class="de.wwk.voran.apps.common.model.test.TestSchritt">
  <extent-class class-ref="de.wwk.voran.apps.common.model.test.TestSchrittXDE"/>
</class-descriptor>
<class-descriptor
  class="de.wwk.voran.apps.common.model.test.TestSchrittXDE"
  table="TestSchrittXDE">
  <field-descriptor
     name="testSchrittId"
     column="testSchrittId"
     jdbc-type="INTEGER"
     primarykey="true"
     autoincrement="true"
     access="anonymous"/>
  <field-descriptor
     name="testLaufId"
     column="testLaufId"
     jdbc-type="INTEGER"
     access="anonymous"/>
  <reference-descriptor
     name="testLauf"
     class-ref="de.wwk.voran.apps.common.model.test.TestLauf"
     auto-retrieve="true"
     auto-update="link"
     auto-delete="link">
     <foreignkey field-ref="testLaufId"/>
  </reference-descriptor>
  <!-- ... -->
</class-descriptor>

*************************************************************
Exception when binding the TestLauf-object directly:

java.sql.SQLException: Ung�ltiger Spaltentyp
        at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
        at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
        at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:269)
        at 
oracle.jdbc.driver.OraclePreparedStatement.setObject(OraclePreparedStatement.java:3088)
        at 
oracle.jdbc.driver.OraclePreparedStatement.setObject(OraclePreparedStatement.java:3217)
        at 
org.apache.ojb.broker.accesslayer.StatementManager.bindStatementValue(StatementManager.java:227)
        at 
org.apache.ojb.broker.accesslayer.StatementManager.bindStatement(StatementManager.java:248)
        at 
org.apache.ojb.broker.accesslayer.StatementManager.bindSelectionCriteria(StatementManager.java:424)
        at 
org.apache.ojb.broker.accesslayer.StatementManager.bindStatement(StatementManager.java:388)
        at 
org.apache.ojb.broker.accesslayer.StatementManager.bindStatement(StatementManager.java:361)
        at 
org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeQuery(JdbcAccessImpl.java:279)
        at org.apache.ojb.broker.accesslayer.RsQueryObject.performQuery(Unknown 
Source)
        at org.apache.ojb.broker.accesslayer.RsIterator.<init>(Unknown Source)
        at 
org.apache.ojb.broker.core.RsIteratorFactoryImpl.createRsIterator(Unknown 
Source)
        at 
org.apache.ojb.broker.core.PersistenceBrokerImpl.getRsIteratorFromQuery(Unknown 
Source)
        at 
org.apache.ojb.broker.core.PersistenceBrokerImpl.getIteratorFromQuery(Unknown 
Source)
        at 
org.apache.ojb.broker.core.PersistenceBrokerImpl.getIteratorByQuery(Unknown 
Source)
        at 
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getIteratorByQuery(Unknown
 Source)
        at 
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getIteratorByQuery(Unknown
 Source)
        at 
de.wwk.voran.apps.common.db.DBMapper.getTestSchrittIterator(DBMapper.java:248)
        at 
de.wwk.voran.apps.common.db.DBMapper.selectTestSchritt(DBMapper.java:182)
        at de.wwk.voran.apps.common.db.DBMapper.main(DBMapper.java:56)
org.apache.ojb.broker.PersistenceBrokerSQLException: java.sql.SQLException: 
Ung�ltiger Spaltentyp
        at 
org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeQuery(JdbcAccessImpl.java:318)
        at org.apache.ojb.broker.accesslayer.RsQueryObject.performQuery(Unknown 
Source)
        at org.apache.ojb.broker.accesslayer.RsIterator.<init>(Unknown Source)
        at 
org.apache.ojb.broker.core.RsIteratorFactoryImpl.createRsIterator(Unknown 
Source)
        at 
org.apache.ojb.broker.core.PersistenceBrokerImpl.getRsIteratorFromQuery(Unknown 
Source)
        at 
org.apache.ojb.broker.core.PersistenceBrokerImpl.getIteratorFromQuery(Unknown 
Source)
        at 
org.apache.ojb.broker.core.PersistenceBrokerImpl.getIteratorByQuery(Unknown 
Source)
        at 
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getIteratorByQuery(Unknown
 Source)
        at 
org.apache.ojb.broker.core.DelegatingPersistenceBroker.getIteratorByQuery(Unknown
 Source)
        at 
de.wwk.voran.apps.common.db.DBMapper.getTestSchrittIterator(DBMapper.java:248)
        at 
de.wwk.voran.apps.common.db.DBMapper.selectTestSchritt(DBMapper.java:182)
        at de.wwk.voran.apps.common.db.DBMapper.main(DBMapper.java:56)
Caused by: java.sql.SQLException: Ung�ltiger Spaltentyp
        at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
        at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)
        at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:269)
        at 
oracle.jdbc.driver.OraclePreparedStatement.setObject(OraclePreparedStatement.java:3088)
        at 
oracle.jdbc.driver.OraclePreparedStatement.setObject(OraclePreparedStatement.java:3217)
        at 
org.apache.ojb.broker.accesslayer.StatementManager.bindStatementValue(StatementManager.java:227)
        at 
org.apache.ojb.broker.accesslayer.StatementManager.bindStatement(StatementManager.java:248)
        at 
org.apache.ojb.broker.accesslayer.StatementManager.bindSelectionCriteria(StatementManager.java:424)
        at 
org.apache.ojb.broker.accesslayer.StatementManager.bindStatement(StatementManager.java:388)
        at 
org.apache.ojb.broker.accesslayer.StatementManager.bindStatement(StatementManager.java:361)
        at 
org.apache.ojb.broker.accesslayer.JdbcAccessImpl.executeQuery(JdbcAccessImpl.java:279)
        ... 11 more
Exception in thread "main" 


 
> I haven't looked at the source of OJB for quite a while; and then it 
> wan't in any depth.
> 
> I'd suggest you double-check the mappings in your repository.xml; I 
> think you might have a typo, or mismatch...  I believe the 
> xml for what 
> you're mapping should look something like: 
> 
> <class-descriptor
>         class="com.x.y.TestStep"
>         table="TestStep">
>         <field-descriptor
>             name="id"
>             column="id"
>             jdbc-type="BIGINT"
>             primarykey="true"
>             autoincrement="true"/>
>         <field-descriptor
>             name="testRunId"
>             column="testRunId"
>             jdbc-type="BIGINT"
>             access="anonymous"/>
>         ....
>         <reference-descriptor
>             name="testRun"
>             class-ref="com.x.y.TestRun"
>             refresh="true"
>             auto-retrieve="true"
>             auto-update="true"
>             auto-delete="false">
>             <foreignkey field-ref="testRunId"/>
>         </reference-descriptor>
>     </class-descriptor>
> 
>     <class-descriptor
>         class="com.x.y.TestRun"
>         table="TestRun">
>         <field-descriptor
>             name="id"
>             column="id"
>             jdbc-type="BIGINT"
>             primarykey="true"
>             autoincrement="true"/>
>         ...
>     </class-descriptor>
> 
> While you would then need a TestStep class like:
>     public class TestStep {
>         private TestRun testRun = null;
>         ....
>     }
> 
> Aside from double checking these I can't think of anything.  
> I have not 
> had any trouble with this type of mapping.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to