The modeler says no dependent PK In all cases (actual 3) where this problem exists, the relation-target is a kind of enumeration. The relation points from nonPK-attribute to the PK (1 attribute) of the enumeration-Table
Especially strange: In all 3 constellation that show this problem the Target-Table has less than 20 rows. In my Tests, there seems to be a dependency to a small count of data in the target-table My assumption was a kind of interference of disabled cache and very small table but I wasn't able to proof ist. 2009/5/29 Andrus Adamchik <[email protected]> > Strange. How is the relationship mapped? Is this a PK to dependent PK? > > Andrus > > > > On May 28, 2009, at 5:16 PM, Juergen Saar wrote: > > Hi, >> >> there is strange behavior on 1:1 Relations where the target-table has only >> a >> small amount of data. >> In this cases I can see in the logfile, that there is no select for data >> at >> all. >> >> I found a workaround ... I do an explizit select ... this works >> but the relation always brings hollow object >> perhaps it brings a little more understandin of the problem: >> >> One more thing: I turn caching off, because there is >> more Software on the System that works with this data. >> >> The Code Sniplet: >> >> I overwrite the readProperty from CayenneDataObject >> in my derived Class named MwareBusinessObject >> the 'expressionForRelation' is a helper working on base og the >> Cayenne-Configuration >> >> public Object readProperty(String propName) { >> Object result = null; >> try { >> result = super.readProperty(propName); >> ... >> if (result != null) { >> ... >> } else if (result instanceof MwareBusinessObject) { >> /* >> * @WORKAROUND >> */ >> MwareBusinessObject bobj = (MwareBusinessObject) result; >> if (bobj.getPersistenceState() == >> PersistenceState.HOLLOW) { >> Expression ex = >> CayenneUtils.expressionForRelation(this, propName); >> SelectQuery query = new >> SelectQuery(result.getClass(), ex); >> List tmp = getDataContext().performQuery(query); >> if (tmp.size() == 1) { >> result = tmp.get(0); >> } >> } >> } >> } >> } catch (Exception e) { >> ... >> >> >> My Cayenne-Version is 2.0.4 >> >> Sorry for not having tested the Problem with Version 3 >> -Juergen- >> > >
