首页 > 解决方案 > 使用没有 SQLINjection 范围的 JPA 或 entityManager 查找列的不同值

问题描述

我正在尝试获取列的不同值,列名是动态的,用户将提供。所以动态查询可能是

public List<String> getDistinctValues(String paramName) {
    String query = "SELECT DISTINCT " + paramName+ "FROM tableName";
    return dataScalarDynamicQueryRepository.getDistinctValues(query);*/
}

它运行良好,但会导致 sql 注入。为了解决 SQL 注入,尝试使用 JPA。

@Query(value ="SELECT DISTINCT (:paramName) FROM tableName", nativeQuery=true) List getDistinctValues(@Param("paramName") String paramName)

假设它与上面的查询相同,但结果返回 ["file_name"] 而不是 ["value1","value2"]

任何人都可以就此提出建议。

我的数据库是 SQL Server。

标签: mysqlhibernatejpaspring-data-jpa

解决方案


推荐阅读