Re: Null pointer in Cayenne 2.0.3 code

From: Alexander Lamb (dev) ("Alexander)
Date: Fri Aug 31 2007 - 11:15:22 EDT

  • Next message: Andrus Adamchik: "Re: Null pointer in Cayenne 2.0.3 code"

    Initially, it was a static method to fetch a Patient from the primary
    key (give the DataContext, the String, returns the Patient or null).

    Since whatever I was doing would crash Cayenne, I simply tried to do
    fetch all patients:

    Here is the function (will all my experiments commented out :-)

    Oviously, I simply want to fetch a Patient from his key (a varchar of
    approx. 35 characters).

            public static Patient patientWithPKInContext(String pk, DataContext
    dataContext) {
              //Expression q = ExpressionFactory.matchExp
    (Patient.BIRTH_CITY_PROPERTY,"Bitola");
              //Expression q = Expression.fromString("patientPk = '" + pk + "'");
    // Patient p = (Patient)DataObjectUtils.objectForPK(dataContext,
    "Patient", pk);
              //System.out.println("--- found object: " + p);
              //return p;
            
    // System.out.println("EXP:" + q.toString());
            // SelectQuery s = new SelectQuery(Patient.class,q);
              // List patients = dataContext.performQuery(s);
         SelectQuery allPatients = new SelectQuery(Patient.class);
         List patients = dataContext.performQuery(allPatients);
            
                if(patients.size() == 0)
                   return null;
                else
                   return (Patient)patients.get(0);
            
         }

    Le 31 août 07 à 17:07, Michael Gentry a écrit :

    > Hi Alex,
    >
    > I'm curious as to why:
    >
    > at ch.rodano.msbase.model.Patient.patientWithPKInContext
    > (Patient.java:30)
    >
    > is in your stack trace? What does that method do?
    >
    > Thanks,
    >
    > /dev/mrg
    >
    >
    > On 8/31/07, Alexander Lamb (dev) <alam..ac.com> wrote:
    >> Hello list,
    >>
    >> We are experimenting a Cayenne crash and wondering how to get
    >> around it.
    >>
    >> Here is the place of the crash:
    >>
    >> java.lang.NullPointerException
    >> at org.apache.cayenne.query.BaseQueryMetadata.resolve
    >> (BaseQueryMetadata.java:97)
    >> at org.apache.cayenne.query.SelectQuery.getMetaData
    >> (SelectQuery.java:
    >> 151)
    >> at org.apache.cayenne.util.ObjectContextQueryAction.<init>
    >> (ObjectContextQueryAction.java:69)
    >> at org.apache.cayenne.access.DataContextQueryAction.<init>
    >> (DataContextQueryAction.java:46)
    >> at org.apache.cayenne.access.DataContext.onQuery
    >> (DataContext.java:1387)
    >> at org.apache.cayenne.access.DataContext.performQuery
    >> (DataContext.java:1376)
    >> at ch.rodano.msbase.model.Patient.patientWithPKInContext
    >> (Patient.java:30)
    >>
    >> I am not certain how to check the line were it crashed (looking at
    >> the code repository on-line does not probably garantee the line
    >> number is the same).
    >>
    >> We are simply trying to get a list of objects:
    >>
    >> SelectQuery allPatients = new SelectQuery(Patient.class);
    >> List patients = dataContext.performQuery(allPatients);
    >>
    >> Probably something is wrong with our model, but what? How to find
    >> out?
    >> The only different thing we did (which we did already previously) is
    >> that the primary key for Patient is a varchar (String) and is not
    >> hidden in the Java Class.
    >>
    >> Thanks for any hints (we regenerated everyting, etc... always the
    >> same crash)
    >>
    >> Alex



    This archive was generated by hypermail 2.0.0 : Fri Aug 31 2007 - 11:16:00 EDT