【问题标题】:GAE @Persistent(valueStrategy = IdGeneratorStrategy.SEQUENCE) not generating sequential numbersGAE @Persistent(valueStrategy = IdGeneratorStrategy.SEQUENCE) 不生成序列号
【发布时间】:2015-01-30 14:26:34
【问题描述】:

我有一个字段:

当我把它放进去时:

它不是按顺序生成的

序列号不按顺序排列的任何原因?我将在 2 个单独的帖子中添加日志,因为它们对于这篇帖子来说太大了。

1:1422624487.413000 [s~server-test-killesk/12.381882801386260762].<stdout>: 13:28:07,413 DEBUG Request FC14E205 ValueGeneration:debug:58 - Creating ValueGenerator instance of "com.google.appengine.datanucleus.valuegenerator.SequenceGenerator" for "com.eurekaapp.server.dao.mappedobjects.DAOJobEvent.sequence"
1:1422624487.424000 [s~server-test-killesk/12.381882801386260762].<stdout>: 13:28:07,423 DEBUG Request FC14E205 ValueGeneration:debug:58 - Generated value for field "com.eurekaapp.server.dao.mappedobjects.DAOJobEvent.sequence" using strategy="sequence" (Generator="com.google.appengine.datanucleus.valuegenerator.SequenceGenerator") : value=1,050,002
1:1422624487.624000 [s~server-test-killesk/12.381882801386260762].<stdout>: 13:28:07,624 DEBUG Request FC14E205 ValueGeneration:debug:58 - Generated value for field "com.eurekaapp.server.dao.mappedobjects.DAOJobEvent.sequence" using strategy="sequence" (Generator="com.google.appengine.datanucleus.valuegenerator.SequenceGenerator") : value=1,040,003
1:1422624487.908000 [s~server-test-killesk/12.381882801386260762].<stdout>: 13:28:07,907 DEBUG Request FC14E205 ValueGeneration:debug:58 - Generated value for field "com.eurekaapp.server.dao.mappedobjects.DAOJobEvent.sequence" using strategy="sequence" (Generator="com.google.appengine.datanucleus.valuegenerator.SequenceGenerator") : value=3,010,003

【问题讨论】:

  • 这可能是不可能的。请看这个链接:groups.google.com/forum/#!topic/google-appengine-java/…
  • 感谢尼尔的评论。我将删除所有 @Default 注释。我需要阅读更多关于 JDO 技术的信息。不过感谢您的评论,它确实有助于回答我的问题。
  • Killesk ..你是否能够通过 (valueStrategy = IdGeneratorStrategy.SEQUENCE) 获得序列号?在上面的评论中,您说为每个字段删除 @persistent 真的有助于回答您的问题吗?所以只是想确认这有帮助吗?
  • @Vivek 不,我可以让它在本地工作,但是一旦我推送到实时系统,它会给我随机值。我想我读到了,因为它是一个基于云的系统,它使用许多不同的数据库,所以每次你在不同的数据库上创建一个新行时,你都会得到不同的值。
  • 另外,对不起,我的第一条评论很讽刺。那个尼尔根本没有帮助我。他只是评论了我如何错误地使用@Persistent。

标签: java google-app-engine google-cloud-datastore jdo


【解决方案1】:

IdGeneratorStrategy.SEQUENCE 是在 DatastoreService.allocateIds() 之上实现的,这是 Cloud Datastore 在内部分配 Id 的方式。适用于 Cloud Datastore 自动 ID 分配的所有内容都适用于 SEQUENCE。

序列只保证是唯一的,而不是单调递增的。

【讨论】:

    猜你喜欢
    • 2010-12-29
    • 2012-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多