【问题标题】:Dynamic schema selection for Spring Data JPA repositories with schema coming from database具有来自数据库的模式的 Spring Data JPA 存储库的动态模式选择
【发布时间】:2015-05-12 15:56:28
【问题描述】:

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

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

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

【问题讨论】:

    标签: java sql-server spring hibernate jpa


    【解决方案1】:

    只需为每个架构创建一个 EntityManager(Factory) 并将它们放在地图中以供选择。

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

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

    【讨论】:

    • 我事先不知道会有多少模式,也不知道它们叫什么。对于每个查询,必须从预先确定的全局架构中检索正确的架构。
    • 然后在您知道架构后立即创建 EntityManager(Factory)。请注意,您可以通过编程方式配置 EntityManagerFactory。
    • 我做到了,它有效,非常感谢。您能否将其作为答案,以便我接受。
    • @Alessandro 你是如何用@Entity 类修复它的?由于有多个动态模式,并且每个实体都可以属于每个模式。此外,如果我们在 @Table 中省略模式名称,则会引发错误。我正在使用 PostgreSQL 数据库。
    猜你喜欢
    • 1970-01-01
    • 2018-07-12
    • 1970-01-01
    • 1970-01-01
    • 2019-09-22
    • 2017-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多