Re: Sometimes no data from Relation to small tables

From: Juergen Saar (juerge..saar.org)
Date: Fri May 29 2009 - 05:07:22 EDT

  • Next message: Andrus Adamchik: "Re: Sometimes no data from Relation to small tables"

    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