Как удалить '', когда динамический аргумент типа String? - PullRequest
0 голосов
/ 02 января 2019

Я хочу использовать 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);

Что я могу сделать, чтобы предотвратить такое поведение?

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Я пытался решить мою проблему двумя способами.Во-первых, используйте JDBC.Во-вторых, интегрируйте инфраструктуру mybatis. Добавьте зависимость в pom.xml и напишите маппер для реализации моих потребностей. Это довольно просто для проекта Springboot.use JDBC dependency and mapper the mapper

0 голосов
/ 03 января 2019

Это функция, предназначенная для предотвращения SQL-инъекций атак - вместо того, чтобы объединять необработанный текст, который может быть использован злоумышленником, он использует параметризованный запрос для безопасного добавления параметра.

К сожалению для вас, вы на самом деле пытаетесь использовать SQL-инъекцию для достижения того, что вы хотите. Вы должны посмотреть, как это изменить, и вместо создания String, содержащего динамический запрос, используйте некоторую разновидность библиотеки DSL.

Spring-Data-JPA поддерживает несколько способов сделать это, включая Критерии , Технические характеристики и QueryDSL .

Этот пост содержит краткий обзор того, как их использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...