java - 在 Google App Engine 上按最新创建的顺序接收实体

标签 java android sql database google-app-engine

我正在使用 android 并使用 Google App Engine 构建了我的项目。然而,当我收到实体列表时,它们会通过首次创建返回给我。我需要他们从相反的方向回来,或者只是 100 个最新的。我可以限制我实际收到的数量。我在 Google 或 stackoverflow 上找不到任何内容。有人对此有疑问或例子吗?有什么快速帮助吗?

最佳答案

您需要提交一个 DateProperty 字段,其中 index=True 且 auto_now_add=True。然后,您可以使用提取限制对此字段进行降序排序。可能有更巧妙的方法,但这是我尝试过的且真实的。

恕我直言 - 在每个重要实体上始终包含此 date_created 属性是一个非常好的主意。是否索引它取决于它的用途。正如 Tomasz 所指出的,实体 id 虽然通常是升序的,但并不保证一定如此。不要依赖他们。因此,如果您发现自己需要按顺序推进模型,那么您会很高兴拥有“datec”字段。 (在每条记录上始终包含一个“版本”IntegerProperty 也是一个好主意,每当您需要通过现有实体读/写方式以确保最近的属性更改应用于所有实体时,这都非常有用。)考虑到这些潜在的好处,问问自己,要付出什么代价才能阻止您以这两个属性结束每个模型。 {注意:索引是真正的成本,因此不要从这些字段中设置index=True,除非您打算使用它。)

datec = ndb.DateTimeProperty(indexed=True, auto_now_add=True)
v = ndb.IntegerProperty(indexed=False, default=1)

关于java - 在 Google App Engine 上按最新创建的顺序接收实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17780395/

相关文章:

android - FirebaseAuth - 让用户使用任何提供商更改密码 - Android

sql - MySQL View - 何时使用和何时不使用

java - 当系统脱离网络时,面临 SAP JCo 服务器连接问题

android - 在 ListView 中拉动刷新

android - 在 test.Jar 中启动 startActivity() ,Cordova 插件

mysql - 什么命令可以查看表之间的关系?

mysql - 只选择不为空的数据

java - 当线程 T1 加入线程 T2 并且 T2 被中断时会发生什么

java - 从 Oracle 触发器启动 Java Web 应用程序中的流程

java - Google App Engine 任务队列在调用 Google Cloud Endpoints API 时获得 404