public void edit(String tenantId,
String id,
int operator,
String name,
List<Integer> employeeIds,
List<Integer> departmentIds,
List<String> roleIds,
String scopeDescription,
String description,
String status,
String exceptionStatus,
List<ActivityNodeEntity> nodes) {
Query<ActivityTypePO> query = mongoContext.createQuery(ActivityTypePO.class)
.field(MongoPO.F_TENANT_ID).equal(tenantId)
.field(MongoPO.F_ID).equal(new ObjectId(id));
UpdateOperations<ActivityTypePO> updateOperations = mongoContext.createUpdateOperations(ActivityTypePO.class)
.set(MongoPO.F_LAST_UPDATE_TIME, System.currentTimeMillis())
.set(MongoPO.F_LAST_UPDATER, operator)
.set(ActivityTypePO.F_NAME, name)
.set(ActivityTypePO.F_EMPLOYEE_IDS, employeeIds)
.set(ActivityTypePO.F_DEPARTMENT_IDS, departmentIds)
.set(ActivityTypePO.F_ROLE_IDS, roleIds)
.set(ActivityTypePO.F_SCOPE_DESCRIPTION, scopeDescription)
.set(ActivityTypePO.F_DESCRIPTION, description)
.set(ActivityTypePO.F_STATUS, status)
.set(ActivityTypePO.F_EXCEPTION_STATUS, exceptionStatus)
.inc(ActivityTypePO.F_VERSION)
.set(ActivityTypePO.F_ACTIVITY_NODES, nodes);
mongoContext.update(query, updateOperations);
}
当nodes 里面的实体类中有字段为null 时,更新后mongo中就缺失了这个字段。例如: status=null ,mongo中就没了这个字段
@Data
@ToString
public class ActivityNodeEntity implements Serializable {
@Property("name")
private String name;
@Property("template_id")
private String templateId;
@Property("package")
private String packageType;
@Property("type")
private String type;
@Property("status")
private String status;
@JSONField(name = "exception_status")
@Property("exception_status")
private String exceptionStatus;
}
第一段代码为更新数据操作。 第二段是出问题的实体类。