Java 字段数未定义的Morphia更新文档
我正在使用MongoDB的morphia进行一个小项目。我想知道更新文档的最佳方式是什么,而不需要直接知道更新哪个字段。比如说,我有一个表单,在保存到数据库后,我可能想回来更改一些字段,但我还没有决定要更改什么。 我当前的解决方案是对所有字段进行更新,无论是否更改,当然它会引发null异常。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
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)