提问morphia框架,修改mongodb数据时,内存嵌套为空字段不保存

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;
}

第一段代码为更新数据操作。 第二段是出问题的实体类。 

请登录后发表评论