- 将校验注解直接添加到 DTO 类的字段上,而不是添加到父类中。修改 DTO 类的字段声明,将校验注解添加到字段上。例如
@Data
@TableName("t_exam_oral")
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "ExamOral对象", description = "口腔检测结果表")
public class ExamOral extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 学生id
*/
@ApiModelProperty(value = "学生id")
private Long personId;
/**
* 设备id
*/
//注解校验设备id不为空
@ApiModelProperty(value = "设备id")
private Long deviceId;
/**
* 学生姓名
*/
@ApiModelProperty(value = "学生姓名")
private String personName;
/**
* 检测批次
*/
@ApiModelProperty(value = "检测批次")
private Long batchId;
/**
* 学校id
*/
@ApiModelProperty(value = "学校id")
private Long schoolId;
/**
* 年级
*/
@ApiModelProperty(value = "年级")
private Integer grade;
/**
* 班级
*/
@ApiModelProperty(value = "班级")
private Integer clazz;
/**
* 检查人员
*/
@ApiModelProperty(value = "检查人员")
private Long checkerId;
/**
* 检查人员名称
*/
@ApiModelProperty(value = "检查人员名称")
private String checkerName;
/**
* 检测序号
*/
@ApiModelProperty(value = "检测序号")
private String checkNo;
/**
* 检测时间
*/
@ApiModelProperty(value = "检测时间")
private LocalDateTime checkTime;
/**
* 原始图片链接1;牙齿正面+白光 01
*/
@ApiModelProperty(value = "原始图片链接1;牙齿正面+白光 01")
private String originalImage01;
/**
* 原始图片链接2;牙齿正面+紫光 02
*/
@ApiModelProperty(value = "原始图片链接2;牙齿正面+紫光 02")
private String originalImage02;
/**
* 原始图片链接3;牙齿上+白光 03
*/
@ApiModelProperty(value = "原始图片链接3;牙齿上+白光 03")
private String originalImage03;
/**
* 原始图片链接4;牙齿下+白光 04
*/
@ApiModelProperty(value = "原始图片链接4;牙齿下+白光 04")
private String originalImage04;
/**
* 原始图片链接5;牙齿上+紫光 05
*/
@ApiModelProperty(value = "原始图片链接5;牙齿上+紫光 05")
private String originalImage05;
/**
* 原始图片链接6;牙齿下+紫光 06
*/
@ApiModelProperty(value = "原始图片链接6;牙齿下+紫光 06")
private String originalImage06;
/**
* 处理后的图片链接1;算法处理后牙齿正面+白光 01
*/
@ApiModelProperty(value = "处理后的图片链接1;算法处理后牙齿正面+白光 01")
private String processedImage01;
/**
* 处理后的图片链接2;算法处理后牙齿正面+紫光 02
*/
@ApiModelProperty(value = "处理后的图片链接2;算法处理后牙齿正面+紫光 02")
private String processedImage02;
/**
* 处理后的图片链接3;算法处理后牙齿上+白光 03
*/
@ApiModelProperty(value = "处理后的图片链接3;算法处理后牙齿上+白光 03")
private String processedImage03;
/**
* 处理后的图片链接4;算法处理后牙齿下+白光 04
*/
@ApiModelProperty(value = "处理后的图片链接4;算法处理后牙齿下+白光 04")
private String processedImage04;
/**
* 处理后的图片链接5;算法处理后牙齿上+紫光 05
*/
@ApiModelProperty(value = "处理后的图片链接5;算法处理后牙齿上+紫光 05")
private String processedImage05;
/**
* 处理后的图片链接6;算法处理后牙齿下+紫光 06
*/
@ApiModelProperty(value = "处理后的图片链接6;算法处理后牙齿下+紫光 06")
private String processedImage06;
/**
* 牙齿类型
*/
@ApiModelProperty(value = "牙齿类型")
private String toothType;
/**
* 治疗建议
*/
@ApiModelProperty(value = "治疗建议")
private String treatmentSuggestion;
/**
* 备注
*/
@ApiModelProperty(value = "备注")
private String remarks;
}
将 DTO 对象强制转换为 POJO 对象,并且 POJO 对象的字段与 DTO 对象的字段相对应,并且 DTO 对象上的校验已经通过,那么在进行强制转换后,字段信息应该会被正确地赋值给 POJO 对象。
在进行强制转换时,会根据字段名称和类型进行匹配,并将 DTO 对象中的字段值赋给对应的 POJO 对象字段。只要字段名称和类型匹配,字段信息应该不会丢失。
但是,请注意以下几点:
-
强制类型转换存在风险,如果 DTO 对象和 POJO 对象之间的字段结构不完全相同,或者字段类型不兼容,将会导致强制转换失败,抛出 ClassCastException 异常。
-
如果在 DTO 对象中添加了额外的字段,这些额外字段在强制转换时会被忽略,不会被赋值给 POJO 对象。
所以,如果你确保 DTO 对象的字段与 POJO 对象的字段名称和类型完全一致,并且需要将 DTO 数据存入数据库,那么进行强制转换可能是一个方便的方法。但是请务必在进行转换之前,仔细检查字段的一致性,以避免出现类型不匹配的问题。