Hello,
The following scenario was giving me problems:
@PersistenceCapable
class Store {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key key;
@Persistent
User admin;
@Persistent
List<User> otherUsers;
}
because User appears twice within Store, so the framework was not letting
me do it.
My workaround was to define a new class with the following:
@PersistenceCapable
class Store {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key key;
@Persistent
AdminUser admin;
@Persistent
List<RegularUser> otherUsers;
}
but the problem is that I have functions that take User instances as
arguments and that
return User instances and I would like to not have to write separate
functions for RegularUser
and AdminUser.
So, I was wondering, if in addition to the above I were to add the
following:
@PersistenceCapable
@Inheritance(strategy = InheritanceStrategy.SUBCLASS_TABLE)
public abstract class User {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key key;
}
@PersistenceCapable
public class AdminUser extends User {
}
@PersistenceCapable
public class RegularUser extends User {
}
would this work? Note that with this scheme I will never persist references
to the abstract User type which will just be used in the arguments and
return
values of functions in my code for convenience. From what I gather on this
page
http://code.google.com/appengine/docs/java/datastore/jdo/relationships.html
with this scheme I would only run into trouble if I were to call
pm.makePersistent(user)
where user is defined as User user; . I would not run into trouble if I
call pm.makePersistent(store)
because the calss store does not reference abstract class User. Am I
correct in making this assumption?
I am going to try it out.
Please let me know if you foresee any problems with this scheme.
Regards,
JG
--
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.