1. 数据类型转换需求
数据库实体类 User 中的 status 字段是枚举类型 User.UserStatus
前端传来的 UserDTO 中的 status 字段是字符串类型
需要将字符串转换为对应的枚举值

user.setStatus(User.UserStatus.valueOf(userDTO.getStatus()));

接收前端传来的字符串状态值(如 "ACTIVE", "INACTIVE", "LOCKED", "DELETED")
使用 User.UserStatus.valueOf() 方法将其转换为对应的枚举值
设置到用户实体的 status 字段中

前端返回数据,后端不返回,看dto

前端返回数据,后端也返回,但数据库没修改,看set

有一个创建的方法,需要修改,就先删除全部,在创建,反正都要传入重复数据

  @Override
    public List<UnitPersonnelVO> UnitPersonnelByUnitId(List<UnitPersonnelDTO> unitPersonnelDTOList) {
        // 1. 先删除该单位下所有状态
        Long unitId = unitPersonnelDTOList.get(0).getUnitId();
        List<UnitPersonnel> existingPersonnels = unitPersonnelRepository.findByUnitIdAndStatus(unitId, UnitPersonnel.AssignmentStatus.ACTIVE);
        unitPersonnelRepository.deleteAll(existingPersonnels);

        // 2. 然后批量创建新数据
        return batchCreateUnitPersonnel(unitPersonnelDTOList);
    }
    @NotNull(message = "所属检测单位ID不能为空")
    private Long unitId;

long类型不能用@NotBlank 要用notnull

报错:jakarta.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'jakarta.validation.constraints.NotBlank' validating type 'java.lang.Long'. Check configuration for 'unitId'

报错:Page index must not be less than zero

private Integer pageNum = 1;
private Integer pageSize = 10;

pageNum不要设为零或者分页不要减一

Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [com.thundershield.domain.BankAccount#0

报这个错

解决方案

@Version
private Long version;
unit.setId(null); // 明确设置为null确保使用自动生成

这异常是两个或两个以上的session对同一记录进行了修改操作

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐