我有多个架构,并且在 application.properties 文件中我提到了一个架构名称。
但是我有一个存储库,其中包含我正在查询不同模式中的表的查询。我将数据库和模式名称作为参数传递给方法。
@Query(value="select * from :db.:schema.Customer",nativeQuery=true)
List<Entity> fetchEntities(@param("db") String db, @Param("schema") String schema);
但这不起作用。如有任何帮助,我们将不胜感激。
由于 JPA 在底层准备 SQL 查询的方式,不支持对架构名称使用参数。但是,您可以构造 SQL 查询字符串,动态设置架构,并利用
EntityManager
执行查询:
@PersistenceContext
private EntityManager entityManager;
public List<Entity> fetchEntities(String db, String schema) {
String sql = "SELECT * FROM " + db + "." + schema + ".Customer";
Query query = entityManager.createNativeQuery(sql, Entity.class);
}