Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 谷歌应用引擎:什么时候有自动识别码?_Java_Google App Engine_Datastore - Fatal编程技术网

Java 谷歌应用引擎:什么时候有自动识别码?

Java 谷歌应用引擎:什么时候有自动识别码?,java,google-app-engine,datastore,Java,Google App Engine,Datastore,所以我在GAE的数据存储中创建用户帐户(使用Java) 实体被创建,(最终),太棒了!现在,对象的ID何时可用?是否需要“一段时间”才能对对象执行getProperty(“ID”) 如果我立即需要ID,我是否应该手动分配1个ID供自己使用 我问这个问题是因为我可以自己运行一些代码测试,但这并不能最终解决ID是否在放置后“立即”生成的问题。。。从我所读到的内容来看,我怀疑我不应该依赖于此。我相信它应该非常快(30-50毫秒),在您的情况下,如果您在存储实体后立即尝试从数据存储中获取实体,它应该不会

所以我在GAE的数据存储中创建用户帐户(使用Java)

实体被创建,(最终),太棒了!现在,对象的ID何时可用?是否需要“一段时间”才能对对象执行
getProperty(“ID”)

如果我立即需要ID,我是否应该手动分配1个ID供自己使用


我问这个问题是因为我可以自己运行一些代码测试,但这并不能最终解决ID是否在放置后“立即”生成的问题。。。从我所读到的内容来看,我怀疑我不应该依赖于此。

我相信它应该非常快(30-50毫秒),在您的情况下,如果您在存储实体后立即尝试从数据存储中获取实体,它应该不会有问题

您可以使用log4j并尝试输出持续时间计时,以了解需要多长时间

例如

信息:持久化数据存储的时间:38毫秒

# A default log4j configuration for log4j users.
#
# To use this configuration, deploy it into your application's WEB-INF/classes
# directory.  You are also encouraged to edit it as you like.

# Root logger option
log4j.rootLogger=INFO

# Configure the console as our one appender
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{HH:mm:ss,SSS} %-5p [%c] - %m%n

# tighten logging on the DataNucleus Categories
log4j.category.DataNucleus.JDO=WARN, A1
log4j.category.DataNucleus.Persistence=WARN, A1
log4j.category.DataNucleus.Cache=WARN, A1
log4j.category.DataNucleus.MetaData=WARN, A1
log4j.category.DataNucleus.General=WARN, A1
log4j.category.DataNucleus.Utility=WARN, A1
log4j.category.DataNucleus.Transaction=WARN, A1
log4j.category.DataNucleus.Datastore=WARN, A1
log4j.category.DataNucleus.ClassLoading=WARN, A1
log4j.category.DataNucleus.Plugin=WARN, A1
log4j.category.DataNucleus.ValueGeneration=WARN, A1
log4j.category.DataNucleus.Enhancer=WARN, A1
log4j.category.DataNucleus.SchemaTool=WARN, A1

保存实体时,它包含完整密钥,ID是密钥的一部分。所以,当实体可用时,它立即可用


请注意,实体ID不是实体的属性(除非您自己创建一个)。所以uou应该改为使用
entity.getKey().getId()

起初我不确定,但这里的信息支持这个答案,说明密钥立即可用-至少如果使用DatastoreService.put(),它是可用的。我同意这样的推论,即Id应该立即可用,因为需要基于上述研究构造密钥,毫秒数不应该是一个问题(如果GAE在未来变得非常快,并且您可以将实体存储在
# A default log4j configuration for log4j users.
#
# To use this configuration, deploy it into your application's WEB-INF/classes
# directory.  You are also encouraged to edit it as you like.

# Root logger option
log4j.rootLogger=INFO

# Configure the console as our one appender
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{HH:mm:ss,SSS} %-5p [%c] - %m%n

# tighten logging on the DataNucleus Categories
log4j.category.DataNucleus.JDO=WARN, A1
log4j.category.DataNucleus.Persistence=WARN, A1
log4j.category.DataNucleus.Cache=WARN, A1
log4j.category.DataNucleus.MetaData=WARN, A1
log4j.category.DataNucleus.General=WARN, A1
log4j.category.DataNucleus.Utility=WARN, A1
log4j.category.DataNucleus.Transaction=WARN, A1
log4j.category.DataNucleus.Datastore=WARN, A1
log4j.category.DataNucleus.ClassLoading=WARN, A1
log4j.category.DataNucleus.Plugin=WARN, A1
log4j.category.DataNucleus.ValueGeneration=WARN, A1
log4j.category.DataNucleus.Enhancer=WARN, A1
log4j.category.DataNucleus.SchemaTool=WARN, A1