security开源版本分页数据权限报Column is ambiguous

提问 2 762
moon
moon 2023-07-26
版本: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] 数据权限只支持单表吗?多表得要搞成子查询?多表连接查询是使用姿势不对吗?大佬们求助!!!
回帖
  • 用法错了,你这个有表别名,需要在注解里面设置 @DataFilter
    0 回复
  • moon
    moon (楼主)
    2023-07-27
    @Mark 已搞定@DataFilter注解上要设置表别名face[微笑]
    0 回复