Hi,
I am using SDK 1.3.6.
I noticed the following inconsistencies when using JDO. Consider the
following example:
@PersistenceCapable
public class A implements LoadCallback {
@Persistent
@PrimaryKey
public String key;
@Persistent
public String payload;
@NotPersistent
public String derivedData = null;
public A() {
}
@Override
public void jdoPostLoad() {
derivedData = key;
}
};
@Test
public void testLoadCallback() {
PersistenceManager pm = PMF.get().getPersistenceManager();
A a = new A();
a.key = "foo";
pm.makePersistent(a);
pm.close();
pm = PMF.get().getPersistenceManager();
A a2 = pm.getObjectById(A.class, "foo");
assertEquals("foo", a2.derivedData); // ASSERT 1
pm.close();
pm = PMF.get().getPersistenceManager();
Extent<A> extent = pm.getExtent(A.class, false);
for (A a3 : extent) {
assertEquals("foo", a3.derivedData); // ASSERT 2
}
pm.close();
}
1. When 'payload' field in A is missing then ASSERT 1 fails, i.e.
jdoPostLoad is not called for classes that have only key as their
persistent data member.
2. Another problem is that ASSERT 2 always fails (even if payload is
defined), i.e. jdoPostLoad is not called when objects are loaded via
query/extent interface.
Why does it happen?
--
You received this message because you are subscribed to the Google Groups
"Google App Engine for Java" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/google-appengine-java?hl=en.