我试图找到上述问题的答案,但未能得到答案。以下是我的工作流程,
我的JSP代码是:
<f:form action="saveSubDepartment" modelAttribute="subDepartment" method="Post">
<f:hidden path="subDepartmentId"/>
<f:input path="subDepartmentName"/>
<f:input path="departmentId"/>
<!-- Many other fields-->
<input type="submit" name="create" value="Save">
</f:form>
我在java中的域类是:
public class SubDepartment implements Serializable {
@Id
private String subDepartmentId=null;
private String departmentId;
private String subDepartmentName;
private Date createdOn;
private Date modifiedOn;
/*corresponding setters and getters*/
}
我的数据库中有一个文件
{
"_id" : "17",
"_class" : "somepackage.SubDepartment",
"departmentId" : "DEPT1",
"subDepartmentName" : "hello",
"createdOn" : ISODate("2017-01-25T05:48:53.840+0000"),
"modifiedOn" : ISODate("2017-01-25T07:19:15.616+0000"),
and so many....
}
当我点击“保存”按钮时,我希望除了字段createdOn之外更新所有字段,但是当我使用以下更新查询时,createdOn字段设置为null,DAO类中的更新方法如下< / p>
public String save(SubDepartment subDepartment){
String id=subDepartment.getSubDepartmentId();
subDepartment.setModifiedOn(new Date());
mongoTemplate.updateFirst(new Query(Criteria.where("_id").is(id)), new Update(), SubDepartment.class);
mongoTemplate.save(subDepartment, subDepartmentCollection);
}
当我执行上述操作时,createdOn字段设置为null,因为在我的JSP页面中没有提到它。
所以我尝试使用
<f:hidden path="createdOn">
但它对我不起作用,因为它是后端的日期格式。
在更新DAO类中的整个文档并将其设置为已编辑的文档之前,通过获取字段值(通过执行一个以上的查询)来使其工作的方式。
我的要求还有其他更好的解决方案吗?在此先感谢: - )
答案 0 :(得分:1)
我现在无法访问代码,今天下午我会更新回复,但我觉得这样的事情就是这样。
public String save(SubDepartment subDepartment){
String id=subDepartment.getSubDepartmentId();
subDepartment.setModifiedOn(new Date());
mongoTemplate.updateFirst(new Query(Criteria.where("_id").is(id)), new Update("modifiedOn"), SubDepartment.class);
mongoTemplate.save(subDepartment, subDepartmentCollection);
}
在新的更新(&#34; modifiedOn&#34;)中,如果您没有说出他试图更新所有内容的所有内容,请说明您要更新的所有字段
答案 1 :(得分:0)
根据我的理解,您尝试更新modifiedOn
。代码应该是这样的:
public String save(SubDepartment subDepartment){
Query query = new Query(Criteria.where("_id").is(subDepartment.getSubDepartmentId()));
Update update = Update.update("modifiedOn", new Date());
mongoTemplate.updateFirst(query, update, SubDepartment.class);
}