{"record":{"id":"1f896d2693a50cda","repo":"paascloud/paascloud-master","slug":"uac10011001-1f896d","errorCode":"UAC10011001","errorMessage":"ErrorCodeEnum.UAC10011001","messagePattern":"ErrorCodeEnum\\.UAC10011001","errorType":"error_code","errorClass":"UacBizException","httpStatus":null,"severity":"error","filePath":"paascloud-provider/paascloud-provider-uac/src/main/java/com/paascloud/provider/service/impl/UacRoleUserServiceImpl.java","lineNumber":34,"sourceCode":"import javax.annotation.Resource;\nimport java.util.List;\nimport java.util.Objects;\n\n/**\n * The class Uac role user service.\n *\n * @author paascloud.net@gmail.com\n */\n@Service\n@Transactional(rollbackFor = Exception.class)\npublic class UacRoleUserServiceImpl extends BaseService<UacRoleUser> implements UacRoleUserService {\n\t@Resource\n\tprivate UacRoleUserMapper uacRoleUserMapper;\n\n\t@Override\n\tpublic int deleteByUserId(Long userId) {\n\t\tif (null == userId) {\n\t\t\tthrow new UacBizException(ErrorCodeEnum.UAC10011001);\n\t\t}\n\n\t\tUacRoleUser param = new UacRoleUser();\n\t\tparam.setUserId(userId);\n\t\treturn uacRoleUserMapper.delete(param);\n\t}\n\n\t@Override\n\t@Transactional(readOnly = true, rollbackFor = Exception.class)\n\tpublic List<UacRoleUser> queryByUserId(Long userId) {\n\t\tif (null == userId) {\n\t\t\tthrow new UacBizException(ErrorCodeEnum.UAC10011001);\n\t\t}\n\n\t\treturn uacRoleUserMapper.listByUserId(userId);\n\t}\n\n\t@Override","sourceCodeStart":16,"sourceCodeEnd":52,"githubUrl":"https://github.com/paascloud/paascloud-master/blob/781281a9503332ed3cef44ea618349d14230a127/paascloud-provider/paascloud-provider-uac/src/main/java/com/paascloud/provider/service/impl/UacRoleUserServiceImpl.java#L16-L52","documentation":"UAC10011001 is thrown by UacRoleUserServiceImpl.deleteByUserId when the userId parameter is null. Deleting all role-user associations for a user requires the user id; a null would otherwise produce an unbounded delete, so the service rejects it immediately before touching the mapper.","triggerScenarios":"Calling deleteByUserId(null), typically inside a user-delete flow where the user object or its id was never loaded (e.g. user not found upstream and the null id propagated).","commonSituations":"Cascading user-deletion code that doesn't check the user lookup result, refactored callers that dropped an earlier null check, or batch jobs processing malformed records with missing user ids.","solutions":["Ensure the user id is loaded/validated before invoking deleteByUserId","Add a null check on the user entity before the cascade delete","Skip or log-and-continue for records with a null userId in batch jobs","Verify the upstream user lookup succeeded (delete the user only after it is found)"],"exampleFix":"// before\nUacUser user = uacUserService.getByUserCode(code);\nuacRoleUserService.deleteByUserId(user.getId()); // NPE if user==null\n// after\nUacUser user = uacUserService.getByUserCode(code);\nPreconditions.checkNotNull(user, \"user not found: \" + code);\nuacRoleUserService.deleteByUserId(user.getId());","handlingStrategy":"validation","validationCode":"if (user == null || user.getId() == null) { throw new IllegalStateException(\"cannot delete roles for unknown user\"); }","typeGuard":"boolean isDeletableUser(UacUser user) { return user != null && user.getId() != null; }","tryCatchPattern":"try { uacRoleUserService.deleteByUserId(userId); } catch (UacBizException e) { if (\"UAC10011001\".equals(e.getCode())) { log.warn(\"skipped role-user delete: null userId\"); return 0; } throw e; }","preventionTips":["Null-check the user entity before any cascade delete","Ensure user lookups throw/return early when the user is missing","Guard batch jobs against records with null ids","Test user-delete flows end to end, including missing users"],"tags":["null-argument","java","uac","role-user"],"backgroundTag":"null-argument","analyzedSha":"781281a9503332ed3cef44ea618349d14230a127","analyzedAt":"2026-09-10T10:59:02.070Z","contentChangedAt":"2026-09-10T10:59:02.070Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}