Check for null for each property you are setting inside of onPostAdd(), like:
public void onPostAdd() { if (getProperty() == null) { setProperty(defaultValue); } } On Tue, Sep 1, 2015 at 2:59 PM Lon Varscsak <lon.varsc...@gmail.com> wrote: > I thought of that and tried it, but it's a new uninitialized object. > Basically the code I find in Cayenne is creating a new object in the parent > ec, then merging in changes. So when onPostAdd is called the object is > brand new (no relationships set). > > -Lon > > On Tue, Sep 1, 2015 at 3:40 AM, Andrus Adamchik <and...@objectstyle.org> > wrote: > > > Yeah, I must admit it is a bit messy. We may need to redesign callback > > logic in respect to the nested contexts. For now your most obvious > solution > > is to check for the object state within 'onPostAdd' before changing it > > again. > > > > if(getSomeProperty() == null) { > > // we haven't been called yet, so init the property > > setSomeProperty(..); > > } > > > > Andrus > > > > > On Sep 1, 2015, at 1:04 AM, Lon Varscsak <lon.varsc...@gmail.com> > wrote: > > > > > > So I am having trouble because when I call commitChangesToParent on one > > of > > > my nested ECs, I'm getting onPostAdd called. So in my case, I'm using > > > onPostAdd to "setup" my object by creating relationships and setting > > > default values. However, it's getting called twice. Once when I > create > > > the object in the child context and once on the parent context (during > > > commit). > > > > > > Any ideas on how to combat this? > > > > > > -Lon > > > > >