我需要的是将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 :由于this question建议使用表名,我找不到任何方法(在MySQL中)选择特定的模式名。
编辑2 :我通过创建替代连接并设置如下语句来解决我的问题:
ResultSet rs = connection.createStatement().executeQuery(" SELECT id, name FROM "
+ schema + ".constructions ");
由于我的解决方案并未真正回答问题,因此我将保留该问题,因此,如果有人找到该问题的答案,则该问题仍处于开放状态。
答案 0 :(得分:0)
尝试使用表达语言
@Query(value = " SELECT id, name FROM #{#schema}.constructions " ,nativeQuery = true)