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) <[EMAIL PROTECTED]> 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