Are you positive that the UserProfile instance isn't getting stored or just
isn't getting returned when you later query for the UserPrincipalCredentials
object? You can verify this using the local datastore viewer -- just go to
http://localhost:8080/_ah/admin when your local dev server is running.

My guess is that the UserProfile entity is being saved but it's not being
fetched so you see null when you try to access it. Try adding it to the
default fetch group like so:

@Persistent(defaultFetchGroup = "true")
private UserProfile userProfile;

// ...

Let me know if that helps.

- Jason

On Mon, Jan 11, 2010 at 1:24 AM, Kamlesh <[email protected]> wrote:

>  When ever I try to save object of class UserPrincipalCredentials ,
> using persistancemanager (see snippet below) , the child property
> userProfile does not get saved. can anyone please review my
> annotations and tell me what could be wrong with them ?
>
> Code for saving Operation
> ________________________________________________
>        public UserPrincipalCredentials create(UserPrincipalCredentials
> credentials) {
>                final PersistenceManager pm =
> PMFProvider.get().getPersistenceManager
> ();
>                try {
>                        System.out.println("trying to save");
>                        //final UserProfile profile =
> credentials.getUserProfile();
>                        //profile.setLoginAccount(credentials);
>                        pm.makePersistent(credentials);
>
>                } finally {
>                        pm.close();
>                }
>
>                System.out.println("New User Added....... ");
>                System.out.println("UserName : " +
> credentials.getUserName());
>                System.out.println("Password : " +
> credentials.getPassword());
>                System.out.println("Role : " +
> credentials.getRoles().get(0).getRole
> ());
>                System.out.println("Perm : "
>                                +
> credentials.getRoles().get(0).getPermissions());
>                System.out.println("Profile : " +
> credentials.getUserProfile()
>                                + " , persistent ? : "
>                                +
> JDOHelper.isPersistent(credentials.getUserProfile()));
>                return credentials;
>        }
> ________________________________________________
> and out put at sysout is
> ________________________________________________
> New User Added.......
> UserName : loginAccount5
> Password :
> 52cfddd56f5ff8dd68f564b8172efe27ae14d7fe1f93d89828ab96dcf6ea6670
> Role : DEFAULT
> Perm : []
> Profile : com.kpatil.global.persistance.model.userprof...@1bca1c3 ,
> persistent ? : false
> ________________________________________________
> ________________________________________________Class
> UserPrincipalCredentials
> ________________________________________________
> package com.kpatil.global.persistance.model;
>
> import java.util.List;
>
> import javax.jdo.annotations.IdentityType;
> import javax.jdo.annotations.PersistenceCapable;
> import javax.jdo.annotations.PersistenceModifier;
> import javax.jdo.annotations.Persistent;
> import javax.jdo.annotations.PrimaryKey;
>
> @PersistenceCapable(identityType = IdentityType.APPLICATION)
> public class UserPrincipalCredentials {
>
>        @PrimaryKey
>        @Persistent
>        private String userName;
>
>        @Persistent(persistenceModifier=PersistenceModifier.PERSISTENT)
>        private UserProfile userProfile;
>
>        @Persistent
>        private String password;
>
>        @Persistent
>        private List<UserRole> roles;
>
>        public String getUserName() {
>                return userName;
>        }
>
>        public void setUserName(String userName) {
>                this.userName = userName;
>        }
>
>        public UserProfile getUserProfile() {
>                return userProfile;
>        }
>
>        public void setUserProfile(UserProfile userProfile) {
>                this.userProfile = userProfile;
>        }
>
>        public String getPassword() {
>                return password;
>        }
>
>        public void setPassword(String password) {
>                this.password = password;
>        }
>
>        public List<UserRole> getRoles() {
>                return roles;
>        }
>
>        public void setRoles(List<UserRole> roles) {
>                this.roles = roles;
>        }
>
> }
>
> ________________________________________________Class UserProfile
> ________________________________________________
> package com.kpatil.global.persistance.model;
>
> import java.io.Serializable;
>
> import javax.jdo.annotations.IdGeneratorStrategy;
> import javax.jdo.annotations.IdentityType;
> import javax.jdo.annotations.PersistenceCapable;
> import javax.jdo.annotations.Persistent;
> import javax.jdo.annotations.PrimaryKey;
>
> import com.google.appengine.api.datastore.Key;
>
> @PersistenceCapable(identityType = IdentityType.APPLICATION)
> public class UserProfile implements Serializable {
>
>        private static final long serialVersionUID = -303737956990979603L;
>        @PrimaryKey
>        @Persistent(valueStrategy=IdGeneratorStrategy.IDENTITY)
>        private Key key;
>
>        @Persistent
>        private String firstName;
>        @Persistent
>        private String lastName;
>
>
>        public Key getKey() {
>                return key;
>        }
>
>        public void setKey(Key key) {
>                this.key = key;
>        }
>
>        public String getFirstName() {
>                return firstName;
>        }
>
>        public void setFirstName(String firstName) {
>                this.firstName = firstName;
>        }
>
>        public String getLastName() {
>                return lastName;
>        }
>
>        public void setLastName(String lastName) {
>                this.lastName = lastName;
>        }
>
> }
>
> _______________________________________________________________________________________________________
>
> --
> 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]<google-appengine-java%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/google-appengine-java?hl=en.
>
>
>
>
--
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.

Reply via email to