Hi Jaap. Can you paste the code you're using to create and persist the Employee? This would be a good point to write a quick unit test for the local environment to make sure that the Employee persist code is working as expected -- verifying the String passed into the constructor isn't null, etc. http://code.google.com/appengine/docs/java/howto/unittesting.html
- Jason On Sun, Aug 16, 2009 at 4:09 PM, Jaap <[email protected]> wrote: > > Hi, > > According to > http://code.google.com/intl/de/appengine/docs/java/datastore/creatinggettinganddeletingdata.html#Keys > > it is possible to set the primay keys yourself to a unique string. > When I use the code below this email however the hosted server gives > the following error > > SEVERE: [1250461028948000] javax.servlet.ServletContext log: Exception > while dispatching incoming RPC call > com.google.gwt.user.server.rpc.UnexpectedException: Service method > 'public abstract java.lang.String > org.haitsma.gwttest.client.GreetingService.greetServer > (java.lang.String)' threw an unexpected exception: > org.datanucleus.exceptions.NucleusUserException: The primary key for > org.haitsma.gwttest.client.Employee is an unencoded string but the key > of the corresponding entity in the datastore does not have a name. > You may want to either change the primary key to be an encoded string > (add the "gae.encoded-pk" extension), change the primary key to be of > type com.google.appengine.api.datastore.Key, or, if you're certain > that this class will never have a parent, change the primary key to be > of type Long. > > What do I do wrong? Also when I add @Persistent annotation behind > @PrimaryKey I get the same error. > > Thanks, > > Jaap > > > Example code > ---------- > import java.util.Date; > 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; > > @PersistenceCapable(identityType = IdentityType.APPLICATION) > public class Employee { > @PrimaryKey > private String name; > > @Persistent > private Date hireDate; > > public Employee(String name, Date hireDate) { > this.name = name; > this.hireDate = hireDate; > } > > public String getName() { > return name; > } > > public void setName(String name) { > this.name = name; > } > > public Date getHireDate() { > return hireDate; > } > > public void setHireDate(Date hireDate) { > this.hireDate = hireDate; > } > } > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
