assertEquals(a1.getObjectId(), ctxt
.localObject(a1.getObjectId(), null)
.getObjectId());
PaintingInfo pi1 = newPaintingInfo();
Painting p1 = newPainting();
p1.setPaintingTitle(altPaintingName);
pi1.setPainting(p1);
assertTrue(ctxt.hasChanges());
// do save
ctxt.commitChanges();
ctxt = createDataContext();
// test database data
PaintingInfo pi2 = fetchPaintingInfo();
Painting p21 = pi2.getPainting();
assertNotNull(p21);
assertEquals(altPaintingName, p21.getPaintingTitle());
assertSame(pi2, p21.getToPaintingInfo());
ByteArrayTypeTest.assertByteArraysEqual(paintingImage, p21
.getToPaintingInfo()
.getImageBlob());
Painting p22 = newPainting();
// *** TESTING THIS ***
pi2.setPainting(p22);
// test before save
assertNull(p21.getToPaintingInfo());
assertSame(pi2, p22.getToPaintingInfo());
assertSame(p22, pi2.getPainting());
assertEquals(PersistenceState.MODIFIED, pi2.getPersistenceState());
// do save II
ctxt.commitChanges();
ObjectId pi2oid = pi2.getObjectId();
ctxt = createDataContext();
PaintingInfo pi3 = fetchPaintingInfo();
Painting p3 = pi3.getPainting();
assertNotNull(p3);
assertEquals(paintingName, p3.getPaintingTitle());
assertSame(pi3, p3.getToPaintingInfo());
// test that object id was updated.
assertEquals(pi2oid, pi3.getObjectId());
}