Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.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
GAE数据存储保存一个实体,然后不保存';t使用Java/Objectify更新它_Java_Google App Engine_Development Environment_Objectify - Fatal编程技术网

GAE数据存储保存一个实体,然后不保存';t使用Java/Objectify更新它

GAE数据存储保存一个实体,然后不保存';t使用Java/Objectify更新它,java,google-app-engine,development-environment,objectify,Java,Google App Engine,Development Environment,Objectify,我有一些处理个人资料图像上传的软件(这是BlobstoreService完成巫毒后的回调) protectedvoiddopost(HttpServletRequest-req,HttpServletResponse-res) 抛出ServletException、IOException{ BlobstoreService blobSvc=BlobstoreServiceFactory.getBlobstoreService(); Map blobs=blobSvc.getUploads(req

我有一些处理个人资料图像上传的软件(这是
BlobstoreService
完成巫毒后的回调)

protectedvoiddopost(HttpServletRequest-req,HttpServletResponse-res)
抛出ServletException、IOException{
BlobstoreService blobSvc=BlobstoreServiceFactory.getBlobstoreService();
Map blobs=blobSvc.getUploads(req);
List blobKeys=blobs.get(UserSvc.fieldProfileImg);
字符串principalKey=req.getParameter(UserSvc.fieldPrincipalKey);
布尔失败=真;
if(null!=blobKeys&&blobKeys.size()>0){
可选princi=GaeDataUtil.getByWebKey(principalKey);
if(princi.isPresent()){
log.info(“添加BlobKey之前:+princi.get());
princi.get().setProfileImgKey(blobKeys.get(0));
princi.get().setMiddleName(“Saved”);//只是为了测试是否会更新任何其他值
ofy().save().entity(princi.get()).now();
log.info(“添加BlobKey并保存后:+princi.get());
失败=错误;
res.getWriter().print(“成功”);
}否则{
log.warning(“未能找到具有web密钥的主体:“+principalKey”);
}
}
如果(失败){
res.getWriter()打印(“失败”);
}
}
除了重新保存检索到的实体外,所有操作都正常

背景信息 我自己的服务器端代码正在将配置文件图像数据提交到
BlobstoreService
(我们不必讨论为什么会这样)。提交/上传工作正常,我可以在devserver的管理/数据存储中看到它,我得到我想要的
BlobKey
,甚至可以从
webKey
检索
主体
,但似乎无法保存更新的实体。也没有例外

最初,当我尝试此方法时,我没有检索
BlobKey
,我注意到数据存储将显示两个特殊实体:
\uuuuu BlobInfo\uuuu
,另一个实体的名称我记不起来,但它以
\uuuu
开头和结尾(双下划线)。在我刷新memcache之后,我只能看到
\uuu BlobInfo\uuu
实体,而另一个实体则不见踪影。试图重置数据存储时,我删除了
target \-1.0-SNAPSHOT\WEB-INF\appengine-generated\local_db.bin
,但仍然看不到数据存储中其他特殊实体的任何迹象

是否有方法重置development server上的数据存储和Blobstore

环境:

  • 开发服务器
  • 爪哇7
  • 视窗7
  • 目标化5.1.7

如果您正在寻找一种解决方法,仅在dev服务器中重置blob存储和数据存储条目,那么您可以尝试在
appengine web.xml中更改应用程序名称

appname


如果在此处提供不同的(虚拟)名称,则在重新运行开发服务器时,应重置开发服务器中的内容。

请在此处内联代码,而不是在pastebin上。如果内联的代码太多,有时其他用户会反对。。。何时内联以及何时使用Pastebin和类似服务的标准是什么?永远不要使用Pastebin。如果你的代码太多,你就没有一个,应该去掉代码。所以y().save().entity(princi.get()).now()
不会失败(now()的文档是“如果计算产生异常,它将在这里抛出”),但是你在数据存储查看器中看不到更新吗?您可以重置您的本地环境:在启动时,在日志中显示关于创建sql文件的内容,请将其删除。@zapl!没有例外,但也没有更新。我想可能是无意中(神奇地)我在做一个异步保存,但即使几分钟后更新也不存在。
protected void doPost(HttpServletRequest req, HttpServletResponse res)
                throws ServletException, IOException {
        BlobstoreService blobSvc = BlobstoreServiceFactory.getBlobstoreService();
        Map<String, List<BlobKey>> blobs = blobSvc.getUploads(req);
        List<BlobKey> blobKeys = blobs.get(UserSvc.fieldProfileImg);
        String principalKey = req.getParameter(UserSvc.fieldPrincipalKey);

        boolean failure = true;
        if (null != blobKeys && blobKeys.size() > 0) {
                Optional<Principal> princi = GaeDataUtil.getByWebKey(principalKey);
                if (princi.isPresent()) {
                        log.info("Before adding BlobKey: " + princi.get());
                        princi.get().setProfileImgKey(blobKeys.get(0));
                        princi.get().setMiddleName("Saved"); // just to test if any other value will update
                        ofy().save().entity(princi.get()).now();
                        log.info("After adding BlobKey and saving: " + princi.get());
                        failure = false;
                        res.getWriter().print("SUCCESS");
                } else {
                        log.warning("Failed to find Principal with web key: " + principalKey);
                }
        }
        if (failure) {
                res.getWriter().print("FAIL");
        }

}