cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Juergen Saar <juer...@jsaar.org>
Subject Sometimes no data from Relation to small tables
Date Thu, 28 May 2009 14:16:58 GMT
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