Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.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 字段数未定义的Morphia更新文档_Java_Mongodb_Insert Update_Morphia - Fatal编程技术网

Java 字段数未定义的Morphia更新文档

Java 字段数未定义的Morphia更新文档,java,mongodb,insert-update,morphia,Java,Mongodb,Insert Update,Morphia,我正在使用MongoDB的morphia进行一个小项目。我想知道更新文档的最佳方式是什么,而不需要直接知道更新哪个字段。比如说,我有一个表单,在保存到数据库后,我可能想回来更改一些字段,但我还没有决定要更改什么。 我当前的解决方案是对所有字段进行更新,无论是否更改,当然它会引发null异常。Morphia抱怨空值更新。 我的代码如下所示: Query<Project> q = datastore.find(Project.class, "_id", projectToUpda

我正在使用MongoDB的morphia进行一个小项目。我想知道更新文档的最佳方式是什么,而不需要直接知道更新哪个字段。比如说,我有一个表单,在保存到数据库后,我可能想回来更改一些字段,但我还没有决定要更改什么。 我当前的解决方案是对所有字段进行更新,无论是否更改,当然它会引发null异常。Morphia抱怨空值更新。 我的代码如下所示:

    Query<Project> q = datastore.find(Project.class, "_id", projectToUpdate.getId());

    UpdateOperations<Project> update
            = datastore.createUpdateOperations(Project.class)
                    .set("name", updatedProject.getName())
                    .set("deadline", updatedProject.getDeadline())
                    .set("priority", updatedProject.getPriority())
                    .set("completion", updatedProject.getCompletion())
                    .set("description", updatedProject.getDescription())
                    .set("projectManager", updatedProject.getPM())
                    .set("collaborators", updatedProject.getAllCollaborators())
                    .set("teams", updatedProject.getAllTeams())
                    .set("userStories", updatedProject.getUserStories())
                    .set("log", updatedProject.getLog());
    datastore.findAndModify(q, update);

我正在考虑使用委托/事件处理程序分别更新每个字段,但我担心这可能会降低性能。

您应该只使用datastore.save()。参见上的示例

Exception in thread "main" org.mongodb.morphia.query.QueryException: Value cannot be null.
at org.mongodb.morphia.query.UpdateOpsImpl.set(UpdateOpsImpl.java:220)
at controllers.QueryProjects.updateProject(QueryProjects.java:78)
at controllers.DBConnection.TestMongo(DBConnection.java:152)
at penelope.Main.main(Main.java:12)