Hello again, please excuse my 2nd posting of the same problem, it'll be the last time.
I just have absolutely no idea, what's the problem here and would really appreciate at least a comment like "read the f.. page ..." or "you silly! why don't you just..." or "query for xxx in the archive"! What could possibly be the problem or where could I search for the problem of Castor using a query-given primary key's value for separate tables? Thank you very much! Kind Regards Frank Bruch P.S.: In fact this may represent the biggest problem I have with Castor: If anything goes wrong when a network of related objects is loaded after a query I just receive null for the result object and get no message about the failure. (e.g.: a foreign key's value points to an unexistant row and for some certain reason there's no database-constraint which prevents this) --- Weitergeleitete Nachricht / Forwarded Message --- Date: Thu, 8 Apr 2004 21:04:34 +0200 (MEST) From: "Frank Bruch" <[EMAIL PROTECTED]> To: [EMAIL PROTECTED] Subject: [castor-dev] Castor uses query-value for table x as key for table y, too Hello there, using Castor 0.9.5.3 (reproducable with 0.9.4.3 also) I experience a problem of Castor using a primary key's value for table X to read rows from table Y, too. My OQL-query: Select b from ServiceImplementationVO b where b.oid=2017 Using p6spy 1.3 I was able to log the sql. What follows are the first two sql-statements executed after giving the above OQL to castor. Please ignore the attributes and have a look at the end of the where-clauses. SELECT "SERVICEIMPLEMENTATION"."ID","SERVICEIMPLEMENTATION"."SERVICEID","SERVICEIMPLEMENTATION"."VERSIONMAJOR","SERVICEIMPLEMENTATION"."VERSIONMINOR", "SERVICEIMPLEMENTATION"."VERSIONPATCH","SERVICEIMPLEMENTATION"."LIFECYCLESTATUSDATE","SERVICEIMPLEMENTATION"."SERVICEREQUESTDATE","SERVICEIMPLEMENTATION"."PUBLICITY", "SERVICEIMPLEMENTATION"."LOCALEID","SERVICEIMPLEMENTATION"."DESCRIPTION","SERVICEIMPLEMENTATION"."LIFECYCLESTATE","SERVICEIMPLEMENTATION"."SERVICETYPE", "SERVICEIMPLEMENTATION"."ENVIRONMENT","SERVICEIMPLEMENTATION"."MIGRATIONASPECT","ATTRIBUTEVALUE"."ID","LINK"."ID","MAP_INCIDENTS_SERVICES"."KEY_INCIDENTS", "SERVICEIMPLEMENTATION"."INTERFACEOID","MAP_PACKAGEVERSION_SERVICEIMPL"."KEY_PACKAGEVERSION","CONSUMERPROVIDER"."ID","SERVICEIMPLEMENTATION"."ORIGINOID","MAPPING"."ID" FROM "CONSUMERPROVIDER","MAPPING","MAP_INCIDENTS_SERVICES","LINK","MAP_PACKAGEVERSION_SERVICEIMPL","ATTRIBUTEVALUE","SERVICEIMPLEMENTATION" WHERE "SERVICEIMPLEMENTATION"."ID"="ATTRIBUTEVALUE"."SERVICEIMPLEMENTATIONOID"(+) AND "SERVICEIMPLEMENTATION"."ID"="LINK"."SERVICEIMPLEMENTATIONOID"(+) AND "SERVICEIMPLEMENTATION"."ID"="MAP_INCIDENTS_SERVICES"."KEY_SERVICES"(+) AND "SERVICEIMPLEMENTATION"."ID"="MAP_PACKAGEVERSION_SERVICEIMPL"."KEY_SERVICEIMPLEMENTATION"(+) AND "SERVICEIMPLEMENTATION"."ID"="CONSUMERPROVIDER"."SERVICEIMPLEMENTATIONOID"(+) AND "SERVICEIMPLEMENTATION"."ID"="MAPPING"."SERVICEIMPLEMENTATIONOID"(+) AND ("SERVICEIMPLEMENTATION"."ID" = 2017); SELECT "ATTRIBUTEVALUE"."VALUE","ATTRIBUTEVALUE"."COMPLEXTYPEOID","ATTRIBUTEVALUE"."FIELDOID","ATTRIBUTEVALUE"."SERVICEINTERFACEOID", "ATTRIBUTEVALUE"."ATTRIBUTEDEFINITIONOID","ATTRIBUTEVALUE"."SERVICEIMPLEMENTATIONOID","ATTRIBUTEVALUE"."WEBCOMPONENTOID","ATTRIBUTEVALUE"."SCREENFIELDCONTAINEROID", "ATTRIBUTEVALUE"."IMPLFORMATOID","ATTRIBUTEVALUE"."MAPPINGOID","ATTRIBUTEVALUE"."GUIDEFINITIONOID","ATTRIBUTEVALUE"."SCREENOID","ATTRIBUTEVALUE"."SCREENFIELDOID", "ATTRIBUTEVALUE"."EVENTSOURCEOID","ATTRIBUTEVALUE"."PARAMETEROID","ATTRIBUTEVALUE"."SCREENFORMOID" FROM "ATTRIBUTEVALUE" WHERE "ATTRIBUTEVALUE"."ID"='2017'; While the first query is correctly constructed with the id 2017, the second is not, because 2017 is the id for the serviceimplementation-table but of course not for the attributevalue-table. I would have expected the query to be as follows select ... from attributevalue where attributevalue.serviceimplementationoid=serviceimplementation.id Below the relevant parts of the mapping (attributes omitted). <class name="AttributeValueVO" identity="oid"> <map-to table="attributevalue"/> <field name="oid" type="long" required="true"> <sql name="id" type="bigint"/> </field> <field name="attributesN1ServiceImplementation" type="ServiceImplementationVO"> <sql name="serviceimplementationoid"/> </field> </class> <class name="ServiceImplementationVO" identity="oid"> <map-to table="serviceimplementation"/> <field name="oid" type="long" required="true"> <sql name="id" type="bigint"/> </field> <field name="attributes" type="AttributeValueVO" collection="collection"> <sql many-key="serviceimplementationoid"/> </field> </class> I hope, I am not too stupid but can anyone tell me what could possibly be wrong here? (In fact I haven't changed anything in this part since it had worked, some time ago.) Probably some side-effect(s), but from what side? Any help appreciated. Thanks! Frank Bruch ----------------------------------------------------------- If you wish to unsubscribe from this mailing, send mail to [EMAIL PROTECTED] with a subject of: unsubscribe castor-dev ----------------------------------------------------------- If you wish to unsubscribe from this mailing, send mail to [EMAIL PROTECTED] with a subject of: unsubscribe castor-dev