Axel,

can you please post the DDL you used to create the testcase and testcase_variable 
tables. I'd like to be able to replay what you've experienced.

Just out of curiosity, if you iterated through all testCaseVariables, do you at least 
get all of them returned ? Iow, if you changed 

OQLQuery oql = db.getOQLQuery("SELECT tc FROM 
com.ibm.rfid.testcontroller.testcase.Testcase tc WHERE source = $1");
oql.bind(urlString);
QueryResults results = oql.execute();
logger.debug("Number of testcases: " + results.size());
while(results.hasMore()) {
   testcase = (Testcase) results.next();
   logger.debug("Number of testcase variables: " + 
testcase.getTestcaseVariables().size());
   Vector variables = testcase.getTestCaseVariables();
   for (Iterator iter = variables.iterator(); iter.hasNext(); ) {
      TestCaseVariable variable = (TestCaseVariable) iter.next();
      logger.debug (variable);
   }
}

what's the output ?

Werner

On Fri, 06 Aug 2004 18:20:54 +0200, Axel Mueller wrote:

>
>Hi,
>
>For two tables "testcase" (class Testcase) and "testcase_variable" 
>(class TestcaseVariable) I have defined a 1:n relation and perform a 
>OQLQuery on the "1" side of that relation (which is Testcase).
>Table "testcase" contains only one row whereas the table 
>"testcase_variables" contains 2 rows whose foreign key matches the 
>primary key of the row in "testcase":
>
>mysql> select id from testcase;
>+----+
>| id |
>+----+
>|  1 |
>+----+
>1 row in set (0.00 sec)
>
>mysql> select * from testcase_variable;
>+----+-------------+-----------------+-------------------------+
>| id | testcase_id | label           | description             |
>+----+-------------+-----------------+-------------------------+
>|  1 |           1 | Geschwindigkeit | Palettengeschwindigkeit |
>|  2 |           1 | Versuch         | Versuch                 |
>+----+-------------+-----------------+-------------------------+
>
>I would expect the query below to return ONE Testcase object and the 
>testcase object to contain TWO TestcaseVariable objects.
>Actually  results.size() returns 2 and 
>testcase.getTestcaseVariables().size() returns 1 - exactly the opposite 
>of what I would have expected.
>What am I doing wrong??? I found some examples of 1:n relations but I'm 
>doing the query the same way the do using the same kind of mapping to 
>express the 1:n relation.
>
>
>            OQLQuery oql = db.getOQLQuery("SELECT tc FROM 
>com.ibm.rfid.testcontroller.testcase.Testcase tc WHERE source = $1");
>            oql.bind(urlString);
>            QueryResults results = oql.execute();
>            logger.debug("Number of testcases: " + results.size());
>            while(results.hasMore()) {
>                testcase = (Testcase) results.next();
>                logger.debug("Number of testcase variables: " + 
>testcase.getTestcaseVariables().size());
>            }
>
>
>The relevant section of the mapping descriptor looks like this:
>
>    <class name="com.ibm.rfid.testcontroller.testcase.Testcase" 
>identity="id" key-generator="MAX">
>        <cache-type type="none"/>
>        <map-to table="testcase" xml="testcase"/>
>        <field name="testcaseVariables" 
>type="com.ibm.rfid.testcontroller.testcase.TestcaseVariable" 
>collection="vector">
>            <sql many-key="testcase_id"/>
>            <bind-xml name="testcase-variable" node="element"/>
>        </field>
>        <!-- field name="testRuns" 
>type="com.ibm.rfid.testcontroller.TestRun" collection="vector">
>            <sql many-key="testcase_id"/>
>            <bind-xml name="testcase-run" node="element"/>
>        </field -->
>        <field name="id">
>            <sql name="id"/>
>            <bind-xml name="id" node="attribute"/>
>        </field>
>        <field name="source">
>            <sql name="source"/>
>            <bind-xml name="source" node="attribute"/>
>        </field>
>        <field name="description">
>            <sql name="description"/>
>            <bind-xml name="description" node="attribute"/>
>        </field>
>    </class>
>
>    <class name="com.ibm.rfid.testcontroller.testcase.TestcaseVariable" 
>identity="id" key-generator="MAX">
>        <cache-type type="none"/>
>        <map-to table="testcase_variable" xml="testcase-variable"/>
>        <field name="testcase" 
>type="com.ibm.rfid.testcontroller.testcase.Testcase">
>            <sql name="testcase_id" />
>            <bind-xml name="testcase-id" node="element" reference="true"/>
>        </field>
>        <field name="valueRange" 
>type="com.ibm.rfid.testcontroller.testcase.ValueRange">
>            <bind-xml name="value-range" node="element"/>
>        </field>
>        <field name="id">
>            <sql name="id"/>
>            <bind-xml name="id" node="attribute"/>
>        </field>
>        <field name="label">
>            <sql name="label"/>
>            <bind-xml name="label" node="attribute"/>
>        </field>
>        <field name="description">
>            <sql name="description"/>
>            <bind-xml name="description" node="attribute"/>
>        </field>
>    </class>
>
>
>
>Below is the logging of the query code snipped above:
>
>
>2004-08-06 17:38:30,989 DEBUG [main] engine.SQLEngine 
>(SQLEngine.java:384) - Create SQL: SELECT 
>testcase.id,testcase_variable.id,testcase.source,testcase.description 
>FROM testcase LEFT OUTER JOIN testcase_variable ON 
>testcase.id=testcase_variable.testcase_id WHERE (testcase.source = ?)
>2004-08-06 17:38:31,380 DEBUG [main] engine.SQLEngine$SQLQuery 
>(SQLEngine.java:1699) - jdo.executing
>2004-08-06 17:38:31,410 DEBUG [main] testcase.TestcaseFactory 
>(TestcaseFactory.java:57) - Number of testcases: 2
>2004-08-06 17:38:31,420 DEBUG [main] cache.NoCache (NoCache.java:122) - 
>Removing cache entry for key com.ibm.rfid.testcontroller.testcase.Testcase/1
>2004-08-06 17:38:31,450 DEBUG [main] cache.NoCache (NoCache.java:122) - 
>Removing cache entry for key 
>com.ibm.rfid.testcontroller.testcase.TestcaseVariable/1
>2004-08-06 17:38:31,450 DEBUG [main] engine.SQLEngine 
>(SQLEngine.java:1020) - Loading class: 
>com.ibm.rfid.testcontroller.testcase.TestcaseVariable using SQL: SELECT 
>testcase_variable.testcase_id,variable_value_range.id,testcase_variable.label,testcase_variable.description
> 
>FROM testcase_variable LEFT OUTER JOIN variable_value_range ON 
>testcase_variable.id=variable_value_range.id WHERE testcase_variable.id=?
>2004-08-06 17:38:31,460 DEBUG [main] cache.NoCache (NoCache.java:122) - 
>Removing cache entry for key 
>com.ibm.rfid.testcontroller.testcase.ValueRange/1
>2004-08-06 17:38:31,460 DEBUG [main] engine.SQLEngine 
>(SQLEngine.java:1020) - Loading class: 
>com.ibm.rfid.testcontroller.testcase.ValueRange using SQL: SELECT 
>variable_value_range.testcase_variable_id,variable_value_range.minValue,variable_value_range.maxValue,variable_value_range.increment,variable
_value_range.unit 
>FROM variable_value_range WHERE variable_value_range.id=?
>2004-08-06 17:38:31,470 DEBUG [main] persist.LockEngine 
>(LockEngine.java:370) - Loading class: 
>com.ibm.rfid.testcontroller.testcase.ValueRange with id: 1
>2004-08-06 17:38:31,470 DEBUG [main] persist.LockEngine 
>(LockEngine.java:370) - Loading class: 
>com.ibm.rfid.testcontroller.testcase.TestcaseVariable with id: 1
>2004-08-06 17:38:31,470 DEBUG [main] persist.LockEngine 
>(LockEngine.java:370) - Loading class: 
>com.ibm.rfid.testcontroller.testcase.Testcase with id: 1
>2004-08-06 17:38:31,490 DEBUG [main] testcase.TestcaseFactory 
>(TestcaseFactory.java:60) - Number of testcase variables: 1
>2004-08-06 17:38:31,500 DEBUG [main] persist.ObjectLock 
>(ObjectLock.java:821) - Release 
>com.ibm.rfid.testcontroller.testcase.Testcase/1/0 R/- by 
>[EMAIL PROTECTED]
>2004-08-06 17:38:31,500 DEBUG [main] cache.NoCache (NoCache.java:93) - 
>Creating cache entry for key 
>com.ibm.rfid.testcontroller.testcase.Testcase/1 with value 
>com.ibm.rfid.testcontroller.testcase.Testcase/1/0 -/-
>2004-08-06 17:38:31,510 DEBUG [main] cache.NoCache (NoCache.java:157) - 
>Disposing object com.ibm.rfid.testcontroller.testcase.Testcase/1/0 -/-
>2004-08-06 17:38:31,510 DEBUG [main] persist.ObjectLock 
>(ObjectLock.java:821) - Release 
>com.ibm.rfid.testcontroller.testcase.TestcaseVariable/1/1 R/- by 
>[EMAIL PROTECTED]
>2004-08-06 17:38:31,510 DEBUG [main] cache.NoCache (NoCache.java:93) - 
>Creating cache entry for key 
>com.ibm.rfid.testcontroller.testcase.TestcaseVariable/1 with value 
>com.ibm.rfid.testcontroller.testcase.TestcaseVariable/1/1 -/-
>2004-08-06 17:38:31,520 DEBUG [main] cache.NoCache (NoCache.java:157) - 
>Disposing object 
>com.ibm.rfid.testcontroller.testcase.TestcaseVariable/1/1 -/-
>2004-08-06 17:38:31,520 DEBUG [main] persist.ObjectLock 
>(ObjectLock.java:821) - Release 
>com.ibm.rfid.testcontroller.testcase.ValueRange/1/2 R/- by 
>[EMAIL PROTECTED]
>2004-08-06 17:38:31,520 DEBUG [main] cache.NoCache (NoCache.java:93) - 
>Creating cache entry for key 
>com.ibm.rfid.testcontroller.testcase.ValueRange/1 with value 
>com.ibm.rfid.testcontroller.testcase.ValueRange/1/2 -/-
>2004-08-06 17:38:31,520 DEBUG [main] cache.NoCache (NoCache.java:157) - 
>Disposing object com.ibm.rfid.testcontroller.testcase.ValueRange/1/2 -/-
>
>
>
>----------------------------------------------------------- 
>If you wish to unsubscribe from this mailing, send mail to
>[EMAIL PROTECTED] with a subject of:
>        unsubscribe castor-user
>



----------------------------------------------------------- 
If you wish to unsubscribe from this mailing, send mail to
[EMAIL PROTECTED] with a subject of:
        unsubscribe castor-user

Reply via email to