我一直在尝试创建一个GAE来获取数据并将数据插入到我的Android应用程序中。我使用Eclipse向导来创建两个项目(app engine connected android project)。我正在使用JDO并尝试创建独特的主键,但它似乎并没有为我做这些,我认为它应该是我可能应该是错的。服务器不断弹出主键不应为0的消息。我是新手并正在测试它。这是我认为相关的代码(如果需要更多,请告诉我)。至于我的理解,它应该在服务器调用makepersistant()时得到它的密钥。
@ApiMethod(name = "insertTrack")
public Track insertTrack(Track track) {
PersistenceManager mgr = getPersistenceManager();
try {
if (containsTrack(track)) {
throw new EntityExistsException("Object already exists");
}
mgr.makePersistent(track);
} finally {
mgr.close();
}
return track;
}
这是我的应用程序正在调用的内容:
public class EndpointsTask extends AsyncTask<Context, Integer, Long> {
protected Long doInBackground(Context... contexts) {
Trackendpoint.Builder endpointBuilder = new Trackendpoint.Builder(
AndroidHttp.newCompatibleTransport(),
new JacksonFactory(),
new HttpRequestInitializer() {
public void initialize(HttpRequest httpRequest) { }
});
Trackendpoint endpoint = CloudEndpointUtils.updateBuilder(
endpointBuilder).build();
try {
Track track = new Track();
track.setName("1");
track.setDesc("First Track on Server");
Track result = endpoint.insertTrack(track).execute();
} catch (IOException e) {
e.printStackTrace();
}
return (long) 0;
}
}
和JDO
public class Track {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private long trackID;
private String name;
private String desc;
任何帮助我走向正确方向的帮助都会很棒。提前谢谢!