在springboot项目做valid注解校验,但是对象是继承pojo(bean)的DTO类怎么办?

news2024/11/13 16:20:10
  1. 将校验注解直接添加到 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 对象字段。只要字段名称和类型匹配,字段信息应该不会丢失。

但是,请注意以下几点:

  1. 强制类型转换存在风险,如果 DTO 对象和 POJO 对象之间的字段结构不完全相同,或者字段类型不兼容,将会导致强制转换失败,抛出 ClassCastException 异常。

  2. 如果在 DTO 对象中添加了额外的字段,这些额外字段在强制转换时会被忽略,不会被赋值给 POJO 对象。

所以,如果你确保 DTO 对象的字段与 POJO 对象的字段名称和类型完全一致,并且需要将 DTO 数据存入数据库,那么进行强制转换可能是一个方便的方法。但是请务必在进行转换之前,仔细检查字段的一致性,以避免出现类型不匹配的问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/714290.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CANDENCE :简单贴装器件封装绘制

紧接candence:常见表贴焊盘绘制举例 简单贴装器件封装绘制 以0603封装电容为例,绘制其封装,这里会用到前面绘制的电容的焊盘。 1、打开PCB editor 软件工具 2、新建一个PACKGE symbol 文件,设置好路径和名称。点击ok确认 3、设置画布尺寸、原点位置、…

四、构建高可用的 Eureka-Server 集群

5.1 对刚才的 eureka-server 修改配置文件 5.1.1 server-1 server:port: 8761 #为什么是 8761,其他端口就报错spring:application:name: eureka-server #服务名称eureka:client:fetch-registry: true #是否拉取服务列表register-with-eureka: true #是否注册自己&…

《PyTorch深度学习实践》第十一讲 循环神经网络(基础篇 + 高级篇)

b站刘二大人《PyTorch深度学习实践》课程第十一讲循环神经网络(基础篇 高级篇)笔记与代码: https://www.bilibili.com/video/BV1Y7411d7Ys?p12&vd_sourceb17f113d28933824d753a0915d5e3a90 https://www.bilibili.com/video/BV1Y7411d7Y…

netty学习(3):SpringBoot整合netty实现多个客户端与服务器通信

1. 创建SpringBoot父工程 创建一个SpringBoot工程,然后创建三个子模块 整体工程目录:一个server服务(netty服务器),两个client服务(netty客户端) pom文件引入netty依赖,springboot…

国企一面会问什么?

前言: \textcolor{Green}{前言:} 前言: 💞快秋招了,那么这个专栏就专门来记录一下,同时呢整理一下常见面试题 💞部分题目来自自己的面试题,部分题目来自网络整理 国企注重的和私企会…

中国各地区新能源汽车产量(2015-2022年) 共13个指标

从各地区统计公报、各地区统计年鉴整理了69个省市的新能源汽车产量数据,并提供了包含原始数据的各个来源。数据显示,中国各地区的新能源汽车产量存在着明显的区域差异。该数据可为各研究人员提供重要参考,有助于制定地方产业发展规划和市场战…

ruoyi-vue | electron打包教程(超详细)

公司项目由于来不及单独做客户端了,所以想到用electron直接将前端打包程exe,dmg等格式的安装包。 由于使用的ruoyi-vue框架开发,所以这篇教程以ruoyi-vue为基础的。 环境说明 nodejs:v16.18.1npm:8.19.2ruoyi-vue:3.8…

基于SQLI的SQL字符型报错注入

基于SQLI的SQL字符型报错注入 一. 实验目的 理解数字型报错SQL注入漏洞点的定位方法,掌握利用手工方式完成一次完整SQL注入的过程,熟悉常见SQL注入命令的操作。 二. 实验环境 渗透主机:KALI平台 用户名: college 密码: 360College 目标网…

Windows 10 执行wsl命令报错: --list -o命令行选项无效 --update命令行选项无效等解决办法

问题说明 在使用wsl命令的时候,wsl --update,wsl --list -o等关键的命令都显示命令行选项无效 但是wsl这个命令却又是一个有效的命令 解决办法 1.卸载旧版本的WSL 没有子系统可以跳过这个步骤 打开命令提示符或PowerShell窗口(以管理员身…

深蓝学院C++基础与深度解析笔记 第 10 章 泛型算法与 Lambda 表达式

第 10 章 泛型算法与 Lambda 表达式 1. 泛型算法 1.1 泛型算法&#xff1a; 可以支持多种类型的算法。 int x[100]; std::sort(std: : begin(x), std : :end(x));1.11 这里重点讨论 C 标准库中定义的算法&#xff1a; <algorithm > <numeric> <ranges> 1.…

简洁清新后台模板推荐(光年)

目录 前言一、后台模板介绍1.作者介绍2.模板介绍 二、界面展示1.登录2.首页3.UI元素4.表单5.工具类6.示例页面7.主题选择 三、入口总结 前言 作为后端开发人员&#xff0c;前端技术确实不精通&#xff0c;也没有太多的精力搞前端。所以一直在搜寻一些现成的模板。最近发现一个…

基于单片机的盲人导航智能拐杖老人防丢防摔倒发短息定位

功能介绍 以STM32单片机作为主控系统&#xff1b; OLED液晶当前实时距离&#xff0c;安全距离&#xff0c;当前经纬度信息&#xff1b;超声波检测小于设置的安全距离&#xff0c;蜂鸣器报警提示&#xff1a;低于安全距离&#xff01;超声波检测当前障碍物距离&#xff0c;GPS进…

Linux-CentOS7版本的系统搭建达梦数据库

目录 VMware中安装CentOS 7.5并做相关的配置搭建Docker环境搭建达梦数据库拉取镜像查看镜像命令为镜像设置一个别名根据镜像 创建一个容器 根据镜像 创建一个容器启动并进入容器 VMware中安装CentOS 7.5并做相关的配置 使用VMware安装CentOS7的虚拟机可以参考另外一篇文章&…

netwox构造免费ARP数据包【网络工程】(保姆级图文)

目录 构造免费的 ARP 数据包。1) 构造免费的 ARP 数据包2) 使用 Wireshark 进行抓包 总结 欢迎关注 『网络工程专业』 系列&#xff0c;持续更新中 欢迎关注 『网络工程专业』 系列&#xff0c;持续更新中 温馨提示&#xff1a;对虚拟机做任何设置&#xff0c;建议都要先快照备…

Android修改符盘名称与蓝牙名称

修改符盘名称 android\frameworks\base\media\java\android\mtp\MtpDatabase.java 修改蓝牙名称 android\system\bt\btif\src\btif_dm.cc 注&#xff1a;尽量不在build与device文件下修改设备名称&#xff0c;因为这是套指纹的软件 这里的值必须和之前的软件是一样的

Spring Cloud Feign: 了解、原理和使用

Spring Cloud Feign: 了解、原理和使用 Spring Cloud Feign 是 Spring Cloud 生态系统中的一个重要组件&#xff0c;它提供了一种声明式的、基于注解的 REST 客户端&#xff0c;能够方便地实现服务之间的调用和通信。在本文中&#xff0c;我们将介绍 Spring Cloud Feign 的概念…

链码的打包与升级

目录 1、链码的打包与签名 ​编辑 对链码的签名 1、安装已经添加签名的链码 2、安装成功之后进行链码的实例化操作&#xff0c;同时指定其背书策略 测试 1、查询链码 2、调用链码 3、查询链码 链码的升级 1、安装链码 2、升级链码 3、测试 1、查询 2、调用 3、…

【花雕】全国青少年机器人技术一级考试备考实操搭建手册3

目录 1、秋千 2、跷跷板 3、搅拌器 4、奇怪的钟 5、起重机 6、烤肉架 7、手摇风扇 8、履带车 9、直升机 10、后轮驱动车 搅拌器是一种可以帮助我们将不同的物质混合在一起的机器。它通常由一个电动机和一个搅拌器头组成。当我们把需要混合的物质放入容器中&#xff0c;打开搅拌…

C语言之函数递归

前言   从前有座山&#xff0c;山里有座庙&#xff0c;庙里有个老和尚&#xff0c;正在给小和尚讲故事呢&#xff01;故事是什么呢&#xff1f;"从前有座山&#xff0c;山里有座庙&#xff0c;庙里有个老和尚&#xff0c;正在给小和尚讲故事呢&#xff01;故事是什么呢&…

字典树的数据结构

Trie字典树主要用于存储字符串&#xff0c;Trie 的每个 Node 保存一个字符。用链表来描述的话&#xff0c;就是一个字符串就是一个链表。每个Node都保存了它的所有子节点。 例如我们往字典树中插入see、pain、paint三个单词&#xff0c;Trie字典树如下所示&#xff1a; 也就是…