java - Spring Data JPA 存储库的动态模式选择(模式来自数据库)

标签 java sql-server spring hibernate jpa

正如标题所示,我有一个应用程序(Spring Boot),它必须对 SQL Server 数据库上的指定对象执行一些查询。这种数据库具有单个目录和多个模式,必须根据先前的查询和一些命令行参数来选择。

我似乎无法实现涉及 Hibernate Multi-Tenancy 的策略,因为该网站上的大多数教程和答案都处理来自 Web 请求或外部参数的架构名称,而我在创建之前需要数据库连接主要的 Multi-Tenancy EntityManager。因此,我切换到一个自定义数据源,它尝试更改连接的默认架构(使用 ALTER USER... WITH DEFAULT_SCHEMA = ... )。但这也会失败,因为登录用户无权更改自己的默认架构。

所以我不知道该怎么办。有什么建议吗?

最佳答案

只需为每个模式创建一个 EntityManager(Factory) 并将它们放入 map 中以供选择。

如果您事先不知道架构,您可以在了解架构后立即创建 EntityManager(Factory)。

您可以通过编程方式配置 EntityManagerFactory。

关于java - Spring Data JPA 存储库的动态模式选择(模式来自数据库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30195918/

相关文章:

spring - 如何防止 Spring 在上下文刷新时实例化原型(prototype)作用域 bean?

java - 如何使 Spring @Cacheable 在 AspectJ 切面之上工作?

java - 使用现有的 Singleton 对象进行 Autowiring 注入(inject)

java - 使用页面工厂处理分页

mysql - SQL 查询中的 Mule 参数

java - 如何修复 'Cannot create an instance of ViewModel class'?

sql-server - 如何在SQL Server中创建SYS模式的表?

mysql - SQL 中的条件概率 p(y|x)

java - 为什么不自动生成 serialVersionUID?

java - ImageJ 与 BufferedImage 的兼容性