如何在没有撇号的情况下将字符串参数传递到@query中

vfh0ocws  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(316)

我需要的是将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 ");

我会把这个问题留着讨论,因为我的解决方案并不能真正回答这个问题,所以如果有人找到了这个问题的答案,它仍然是开放的。

cx6n0qe3

cx6n0qe31#

尝试表达语言

@Query(value = " SELECT id, name FROM #{#schema}.constructions " ,nativeQuery = true)

相关问题