Hey group,
I'm quite new to Cayenne so forgive me on any terminology.
I'm trying to use cayenne-1.0.6 with Tomcat 4.1.29, mysql 4.0.16
(connector java 3.0.10).
Basically my problem is that I can't fetch objects related to some
object.
My datamodel is basically a 1 to many:
Whitelist (a list of valid email suffixs for an Org) - The many side
<db-entity name="whitelist" catalog="lgo">
<db-attribute name="emailSuffix" type="VARCHAR" isMandatory="true" length="120"/>
<db-attribute name="id" type="INTEGER" isPrimaryKey="true" isMandatory="true" length="11"/>
<db-attribute name="orgName" type="VARCHAR" isMandatory="true" length="20"/>
</db-entity>
Org - An organisation - the one side
<db-entity name="org" catalog="lgo">
<db-attribute name="id" type="INTEGER" isPrimaryKey="true" isMandatory="true" length="11"/>
<db-attribute name="shortName" type="VARCHAR" isMandatory="true" length="20"/>
</db-entity>
The relationships:
<db-relationship name="toOrg" source="whitelist" target="org" toDependentPK="false" toMany="false">
<db-attribute-pair source="orgName" target="shortName"/>
</db-relationship>
<db-relationship name="toWhitelist" source="org" target="whitelist" toDependentPK="false" toMany="true">
<db-attribute-pair source="shortName" target="orgName"/>
</db-relationship>
<obj-relationship name="toOrg" source="Whitelist" target="Org" toMany="false">
<db-relationship-ref source="whitelist" target="org" name="toOrg"/>
</obj-relationship>
<obj-relationship name="toWhitelist" source="Org" target="Whitelist" toMany="true">
<db-relationship-ref source="org" target="whitelist" name="toWhitelist"/>
</obj-relationship>
Java code (note the comments):
SelectQuery qry = new SelectQuery(
Whitelist.class,
ExpressionFactory.matchExp(Whitelist.EMAIL_SUFFIX_PROPERTY,
emailSuffix));
List results = dataCtx.performQuery(qry);
Whitelist wl = (Whitelist) results.get(0);
// This prints out results as expected
context.log("WL: " + wl.getEmailSuffix() + ", " +
wl.getOrgName());
// Cayenne INFO log prints out these msgs twice for some
reason:
// "....will run 1 query.", "select .. from Org ...
shortName = ? [bind: 'test']" and "returns 1 row" (correct
there should be 1 row)
Org o = wl.getToOrg();
// prints out "Org: {[]<oid: Org: <shortName: test>; state:
hollow>}" ...fair enough
context.log("Org obj: " + o + ": " + o.getOrgKey());
// Prints out "null", but from what I've read this should
fetch the complete object first?
context.log("Org name: " + o.getName());
I just can't see where I've screwed up, can anyone pls help. And sorry
for the huge dump of info. :)
Also note that I can do this (and yield correct results):
SELECT *
FROM whitelist w
inner join Org o on o.shortName = w.orgName
where w.emailSuffix = "test.com"
Thanks,
Steve
-- http://www.fastmail.fm - The way an email service should be
This archive was generated by hypermail 2.0.0 : Mon Feb 02 2004 - 00:47:23 EST