Java 如何返回Objectify上的自定义对象列表

Java 如何返回Objectify上的自定义对象列表,java,android,google-app-engine,google-cloud-endpoints,objectify,Java,Android,Google App Engine,Google Cloud Endpoints,Objectify,我正在从事一个Android项目,该项目使用Google App Engine作为后端,如下所述: 我在后端有一些模型类,比如User和Item,我试图返回用户拥有的项目列表 public List<Ref<Item>> getItems() { return items; } 公共列表getItems(){ 退货项目; } 当我尝试将项目与Gradle文件同步时,出现以下错误: 错误:任务的执行失败:后端:appengineEndpointsGetClien

我正在从事一个Android项目,该项目使用Google App Engine作为后端,如下所述:

我在后端有一些模型类,比如User和Item,我试图返回用户拥有的项目列表

public List<Ref<Item>> getItems() {
    return items;
}
公共列表getItems(){
退货项目;
}
当我尝试将项目与Gradle文件同步时,出现以下错误:

错误:任务的执行失败:后端:appengineEndpointsGetClientLibs。 运行endpoints命令get client lib时出错:参数化类型com.googlecode.objectify.Ref≤后端.model.Item>不受支持

我在这里检查了一些其他问题,通过向getter方法中添加
@ApiResourceProperty(ignored=AnnotationBoolean.TRUE)
注释,我能够无错误地构建项目。但在添加这一行之后,我在Android应用程序端看不到这种方法


你知道如何在Android端获取项目列表吗?

我是通过保存/检索包含序列化集合的对象来实现的。类课程实现了可序列化

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
}

有用的阅读:

谢谢你的回答!我有一个小问题,我想应该是
列出课程
而不是
列出课程
,我错了吗?我不确定其中的区别:我完全不知道代码中的类Ref是什么。我对此一无所知。这是怎么一回事?我的答案中的代码是我项目的一部分,它绝对是工作代码。使用
@Serialize
将使用java序列化存储数据-通常是不明智的。您只需删除
@Serialize
,objectify将分解数据并将其存储为本机
EmbeddedEntity
结构,这是更好的选择。但这两种方法都将对象嵌入父对象中,这可能不是OP想要的。就我个人而言,我会从API中删除Ref,只在API边界之间来回传递真实对象。您不希望android客户端中出现引用。
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);   
    }
}