Hi Kevin,
To (1):
two snippets I can give you. Unfortunately we do not have a fitting test
case.
The "faulty" object is stored in a list and the delete via
context.deleteObject:
//Thios expression fetches all persons that should be deleted from a note
Expression delExp =
ExpressionFactory.matchExp(Mappingnotizperson.TO_NOTIZ_PROPERTY,
notiz.getObjectId()).andExp(ExpressionFactory.matchExp(Mappingnotizperson.TO_PERSONEN_PROPERTY,
each.getObjectId()));
SelectQuery selQ = new
SelectQuery(Mappingnotizperson.class,delExp);
//perform the query
List<Mappingnotizperson> m = this.context.performQuery(selQ);
//Delete the object
this.context.deleteObject(m.get(0));
this.context.commitChanges();
Now the corresponding object is marked as transient and is deleted.
//This refetches all persons that are assigned to one note.
List<Mappingnotizperson> mapList = this.notiz.getMappingnotizpersonArray();
System.err.println("notizid:"+ notizShow.getObjectId());
for (Mappingnotizperson mappingnotizperson : mapList) {
System.err.println("mapp: pers-state:" +
mappingnotizperson.getPersistenceState()); // + " --- persid:" +
mappingnotizperson.getToPersonen());
this.persList.add(mappingnotizperson.getToPersonen()); //**
this.existPers.add(mappingnotizperson.getToPersonen());
}
** Here we get the NullPointerException that tells us, that the person of
this mapping is null.
Hope you can start with what we've got.
To (2):
We're using cayenne 2.0.3 with a customized db adapter to be used with max
db.
To me, the method prepareForAccess makes no sense.
At first it's checked againstz being hollow and afterwards it's checked
against being commited - but how should it be commited when it's already
hollow??
Thanks in advance guys.
Jan
From: Kevin Menard <[EMAIL PROTECTED]>
Reply-To: [email protected]
To: <[email protected]>
Subject: Re: To severe things
Date: Thu, 13 Sep 2007 15:21:52 -0400
Hi Jan,
I'm snipping out a lot of just to get to a few basic questions I have.
On 9/13/07 1:25 PM, "Jan Lendholt" <[EMAIL PROTECTED]> wrote:
> Well, this exception comes on an object with the PersistenceState =
> Transient. The exception is thrown when in doResolveFault cayenne tries
to
> access the object's context.
> But why? This object shouldn't even be there! In my opinion this is a
bug.
> It doesn't matter, if we delete the object with deletObject or with a
delet
> query. How can it be? It's pretty severe though.
If possible, could you please post the code that seems to trigger the
error?
A small test case would be perfect, but showing anything would be helpful.
> (2)
> I try to access a mapping table again, this time we manage resources
like
> rooms, beamers etc.
>
> I get all mappings and try to access via
mapping.getToResource().getname()
> the resource's name.
>
> We get:
>
> 19:22:49.168 WARN!! Exception for /ams?serviceId=Echo.Synchronize
> org.apache.cayenne.FaultFailureException: [EMAIL PROTECTED]@
> @[EMAIL PROTECTED] Error resolving fault for ObjectId:
> <ObjectId:Resource, IDRESOURCE=1> and state (hollow). Possible cause -
> matching row is missing from the database.
What version of Cayenne are you actually using?
--
Kevin
_________________________________________________________________
Haben Spinnen Ohren? Finden Sie es heraus mit dem MSN Suche Superquiz via
http://www.msn-superquiz.de Jetzt mitmachen und gewinnen!