Как передать параметр String в @Query без апострофов - PullRequest
0 голосов
/ 05 октября 2018

Мне нужно передать схему mysql в качестве параметра в @Query, как показано в примере:

@Query
(value = " SELECT id, name FROM " + schema + ".constructions "
,nativeQuery = true)
List<Object> findAllConstructions(String schema);

, но этот код не работает, поскольку схема не может быть преобразована в переменную".

Проблема в том, что когда я пытаюсь передать параметр правильно, например:

@Query
(value = " SELECT id, name FROM ?.constructions "
,nativeQuery = true)
List<Object> findAllConstructions(String schema);

или вот так:

@Query
(value = " SELECT id, name FROM :schema .constructions "
,nativeQuery = true)
List<Object> findAllConstructions(@Param("schema") String schema);

сгенерированный SQL имеет синтаксисошибки, потому что предложение FROM выглядит следующим образом:

FROM 'db_schema'.constructions

, когда должно быть:

FROM db_schema.constructions

Может ли кто-нибудь мне помочь?


РЕДАКТИРОВАТЬ 1 : Я не смог найти (в MySQL) способ ВЫБРАТЬ конкретное имя схемы, как этот вопрос предлагает для имен таблиц.

РЕДАКТИРОВАТЬ 2 : Я решил свою проблему, создав альтернативное соединение и установив следующее утверждение:

ResultSet rs = connection.createStatement().executeQuery(" SELECT id, name FROM " 
+ schema + ".constructions ");

Я оставлю вопрос открытым, потому что мое решение на самом деле не отвечает на вопрос, поэтому, если кто-то найдетответ на вопрос, он все еще открыт.

1 Ответ

0 голосов
/ 05 октября 2018

попробуй с языком выражения

@Query(value = " SELECT id, name FROM #{#schema}.constructions " ,nativeQuery = true)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...