我需要的是将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条答案
按热度按时间qxsslcnc1#
尝试表达语言