As per this thread
the ability to call pm.makePersistent(obj) with a transient object where that transient object has its identity set and where it corresponds to an object in the datastore. Obviously that would only work for application-identity (since it has PK fields, whereas datastore-id has none so "id" not really defined by the object).
One option for datastore-identity would be to have a new method like
pm.makePersistentForIdentity(Object obj, Object id);
This would obviously not allow you to persist by reachability, so whether we just don't permit it for datastore-identity is one option, or alternatively pass in a Map of Object keyed by the identity.