cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Juergen Saar <juer...@jsaar.org>
Subject Re: Sometimes no data from Relation to small tables
Date Fri, 29 May 2009 09:07:22 GMT
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 <andrus@objectstyle.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) {
>>                  /*
>>                   * @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-
>>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message