gpt4 book ai didi

java - 动态参数为String类型时如何去除 ' '?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:21:48 24 4
gpt4 key购买 nike

我想使用 jpa @Query,发现 String 类型的参数会被单引号括起来 ('')在sql语句中自动。由于是子查询,所以会出现SQL错误:

@Query(value="select cate_id,dt,channel,game_id,new_income_money,new_account,consume from ? " +
" where cate_id=? and dt between ? and ?" ,nativeQuery = true)
List<TfData> findTfRangeData(String subsql, Integer cate_id, String start_dt, String end_dt);

我能做些什么来防止这种行为?

最佳答案

这是一个功能,旨在防止SQL injection attacks - 它不是连接可能被攻击者利用的原始文本,而是使用参数化查询以安全的方式添加参数。

不幸的是,您实际上是在尝试使用 SQL 注入(inject)来实现您想要的。您应该考虑改变它,而不是构建包含动态查询的 String,而是使用某种 DSL 库。

Spring-Data-JPA 支持几种方法来做到这一点,包括 Criteria , SpecificationsQueryDSL .

This post快速概述了如何使用它们。

关于java - 动态参数为String类型时如何去除 ' '?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54007055/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com