This seems related to this thread started by Lachlan:
http://objectstyle.org/cayenne/lists/cayenne-devel/2007/06/0027.html
The use of a proxy context may confuse the issues. If you are aware
of this behavior, it is usually easy to work around (by avoiding
calls like "cat.getObjectContext().newObject(SomeEntity.class)"). We
will try to fix it per CAY-797 though, by avoiding the use of proxy
context for callbacks (no matter how much I like the separation of
concerns and runtime flexibility provided by the proxy-based
design :-)).
Andrus
On Jun 5, 2007, at 8:38 AM, Marcin Skladaniec wrote:
Hi,
I would like to clarify, that the context are not equal, and it
does not matter if I choose to compare them by "equal()" or "==".
I cant still get to the bottom of it, how it is possible, that if
both listeners (prePersist and postPersist) are registered
together, only one of them is fired when using
anObject.getObjectContext().newObject().
Marcin
On 02/06/2007, at 11:43 AM, Marcin Skladaniec wrote:
Hi
I'm having a strange problem. When executing this bit of code:
List categories = aContext.performQuery(new SelectQuery
(Category.class));
if (categories.size() != 0) {
for (int categoriesCount = 0; categoriesCount < categories.size
(); categoriesCount++) {
Category cat = (Category) categories.get(categoriesCount);
logger.debug("context equal ? " + cat.getObjectContext().equals
(aContext));
}
}
the contexts are not equal, and I cant find the reason why !
I found this problem, because the perPersist() callback is not
fired when I do
cat.getObjectContext().newObject(SomeEntity.class)
but it is when
aContext.newObject(SomeEntity.class)
to add complexity, postPersist() and other callbacks are fired in
both cases.
Any clues ?
Marcin