如何使用ObjectifyServices获取模型ID而不是Java中的ID?

时间:2019-06-28 06:43:41

标签: google-app-engine google-cloud-storage objectify

我想返回Entity的ID而不是EntityMOdel。以下函数将返回MyModel的列表,但是,我想返回List,该列表将是过滤器MyModel的ID。

public static List<MyModel> getUpdatedMyModel(Long beforeTime) {
    return ofy().load().type(MyModel.class).filter("updatedAt >", beforeTime).list() 

}

1 个答案:

答案 0 :(得分:0)

听起来像您想要一个仅键查询:

final List<Key<MyModel>> keys = ofy().load()
        .type(MyModel.class)
        .filter("updatedAt >", beforeTime)
        .keys()
        .list();

您可以将其转换为带有Java流的id:

final List<Long> ids = ofy().load()
        .type(MyModel.class)
        .filter("updatedAt >", beforeTime)
        .keys()
        .list()
        .stream()
        .map(Key::getId)
        .collect(Collectors.toList());

但是,在应用程序中传递Long值通常是一个坏习惯。 Key<?>对象是类型安全的。