security开源版本分页数据权限报Column is ambiguous
| 版本:renren-security v5.2.0 |
开发环境:IDEA2022,JDK1.8 |
security开源版本分页数据权限报 Column 'creator' in where clause is ambiguous
[pre]
@Service
public class ApiProjectServiceImpl extends BaseServiceImpl<ApiProjectDao, ApiProjectEntity> implements ApiProjectService {
@Override
@DataFilter
public PageData<ApiProjectDTO> page(Map<String, Object> params) {
IPage<ApiProjectEntity> page = getPage(params, Constant.CREATE_DATE, false);
List<ApiProjectEntity> list = baseDao.getList(params);
return getPageData(list, page.getTotal(), ApiProjectDTO.class);
}
[/pre]
[pre]
<mapper namespace="io.renren.modules.api.dao.ApiProjectDao">
<select id="getList" resultType="io.renren.modules.api.entity.ApiProjectEntity">
select p.project_name,d.name as dept_name
from api_project p,sys_dept d where p.dept_id = d.id
</select>
</mapper>
[/pre]
后端报异常如下:
[pre]
### Error querying database. Cause: java.sql.SQLIntegrityConstraintViolationException: Column 'creator' in where clause is ambiguous
### The error may exist in file [E:\renrenworkspace\renren-security-master\renren-admin\target\classes\mapper\api\ApiProjectDao.xml]
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL: SELECT COUNT(*) AS total FROM api_project p, sys_dept d WHERE p.dept_id = d.id AND (dept_id IN (1067246875800000067) OR creator = 1684157630909628418)
### Cause: java.sql.SQLIntegrityConstraintViolationException: Column 'creator' in where clause is ambiguous
; Column 'creator' in where clause is ambiguous; nested exception is java.sql.SQLIntegrityConstraintViolationException: Column 'creator' in where clause is ambiguous
at org.springframework.jdbc.support.SQLExceptionSubclassTranslator.doTranslate(SQLExceptionSubclassTranslator.java:87)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:70)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:79)
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:91)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441)
at com.sun.proxy.$Proxy86.selectList(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:224)
at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForMany(MybatisMapperMethod.java:166)
[/pre]
### SQL: SELECT COUNT(*) AS total FROM api_project p, sys_dept d WHERE p.dept_id = d.id AND (dept_id IN (1067246875800000067) OR creator = 1684157630909628418)
看这个是多表,拼接的sql 字段存在不明确的情况,把xml中语句修改成子查询就没有问题.....
[pre]
<mapper namespace="io.renren.modules.api.dao.ApiProjectDao">
<select id="getList" resultType="io.renren.modules.api.entity.ApiProjectEntity">
select p.project_name,(select d.name from sys_dept d where d.id = p.dept_id) as dept_name
from api_project p
</select>
</mapper>
[/pre]
数据权限只支持单表吗?多表得要搞成子查询?多表连接查询是使用姿势不对吗?大佬们求助!!!