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 <andru..bjectstyle.org>
> 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) {
>> /*
>> *..ORKAROUND
>> */
>> 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-
>>
>
>
This archive was generated by hypermail 2.0.0 : Fri May 29 2009 - 05:08:07 EDT