apache / apache/gravitino

[Improvement] Fix missing MyBatis @Param for role soft-delete mapper binding

Open
#10,270 5 comments 0 reactions 1 assignee Claimed by @Lucas61000 View on GitHub
good first issue improvement
Dominant language
Java
Stars
3.2k
Forks
935
Avg merge
1d 17h
Merged PRs (30d)
339

Description

### What would you like to be improved?

Role deletion on the relational backend can reach RoleMetaMapper.softDeleteRoleMetaByRoleId(Long roleId) through the REST delete-role path. The provider SQL uses #{roleId}, but this mapper method currently lacks @Param("roleId"). That mismatch can cause MyBatis named-parameter binding failures at runtime during role deletion.

### How should we improve?

Add @Param("roleId") to RoleMetaMapper.softDeleteRoleMetaByRoleId (and keep provider SQL as #{roleId}), ensuring deterministic named binding across environments.

Here's a test to help:
```
@Test
public void testSoftDeleteRoleMetaByRoleIdHasNamedParam() throws NoSuchMethodException {
Method method = RoleMetaMapper.class.getMethod("softDeleteRoleMetaByRoleId", Long.class);
Annotation[][] parameterAnnotations = method.getParameterAnnotations();

Assertions.assertEquals(1, parameterAnnotations.length);
Param param = null;
for (Annotation annotation : parameterAnnotations[0]) {
if (annotation instanceof Param) {
param = (Param) annotation;
break;
}
}

Assertions.assertNotNull(
param, "Missing @Param on softDeleteRoleMetaByRoleId may break MyBatis named binding.");
Assertions.assertEquals("roleId", param.value());
}
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.