接口踩坑笔记
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对同一记录进行了修改操作
更多推荐


所有评论(0)