我正在使用Google App Engine进行后端的Android项目,如下所述:Using Android & Google App Engine on Android Studio。
我在后端方面有一些模型类,如User和Item,我试图返回用户拥有的项目列表。
public List<Ref<Item>> getItems() {
return items;
}
当我尝试Sync Project with Gradle Files
时,我收到此错误:
错误:任务&#39;:后端:appengineEndpointsGetClientLibs&#39;执行失败。 运行端点命令get-client-lib时出错:参数化类型com.googlecode.objectify.Ref≤backend.model.Item&gt;不支持。
我在这里检查了一些其他问题,并且能够通过向我的getter方法添加@ApiResourceProperty(ignored = AnnotationBoolean.TRUE)
注释来构建项目而不会出错。但添加此行后,我无法在Android应用端看到此方法。
知道如何在Android端获取项目列表吗?
答案 0 :(得分:1)
我是通过保存/检索包含序列化集合的对象来完成的。类课程实现Serializable。
Language.java
import java.io.Serializable;
import java.util.List;
import com.googlecode.objectify.annotation.Entity;
import com.googlecode.objectify.annotation.Id;
import com.googlecode.objectify.annotation.Serialize;
@Entity
public class Language {
@Id
private String key;
private String title;
@Serialize
private List<Lesson> lessons; //here collection
//getters/setters ommited
}
LanguageService.java
import static com.googlecode.objectify.ObjectifyService.ofy;
import com.google.api.server.spi.config.Api;
import com.google.api.server.spi.config.ApiMethod;
import com.google.api.server.spi.config.Named;
import com.googlecode.objectify.Key;
import com.googlecode.objectify.ObjectifyService;
import com.minspok.entity.Language;
@Api(name = "langapi", version = "v1", description = "langapi")
public class LanguageService {
static{
ObjectifyService.register( Language.class );
}
@ApiMethod(name = "get")
public Language getLanguage(@Named("key") String key){
Language language = ofy().load().key(Key.create(Language.class,
key)).now();
return language;
}
@ApiMethod(name = "create")
public void createLanguage(Language language){
ofy().save().entity(language);
}
}