在具有不同字段子集的端点和 Objectify 之间共享 class

Share class between endpoint and Objectify with different field subset

说这是我的 类

@Entity
public class Library{
...
}

@Entity
public class Book{
    @Load
    @Parent
    @ApiResourceProperty(ignored = AnnotationBoolean.TRUE)
    private Ref<Library> libraryRef;

    @Ignore
    private Library library;
}

我想发送 List<Book> 给 "android" 客户端:我不希望 android 客户端获得 libraryRef 但我希望客户端获得 library

这是我现在的数据访问方式

public static List< Book > getAllBooks(){
    return OfyService.ofy().load().type(Book.class).list();
}

我的端点只是 return List<Book> 到 android。我相信我已经完成了第一部分:确保数据存储不存储 library,而是存储 libraryRef。但是我如何完成第二部分:确保客户端获得 library?

我确定它还没有加载。我如何确保它已加载?我是否必须使用自己的 for 循环进行迭代?

对于使用客户端和服务器之间共享代码的任何人,我的建议是在您的 API 对象和域对象之间进行清晰的分离。预先制作 DTO 需要做更多的工作,但它使您的整个系统更加灵活——如果您想更改您的域对象,您不会冒险破坏无数的移动 phone 应用程序,这些应用程序运行缓慢(或不存在)升级周期。