【发布时间】:2012-06-03 09:20:26
【问题描述】:
我有一个多租户应用程序,我需要在运行时更改架构名称,以便共享数据库独立架构SaaS 设计。
因为创建 EntityManagerFactory 非常昂贵,我想创建 EMF 应用程序范围并在启动 EntityManger 后每个 DB 调用之前指定架构。我正在使用 Postgresql 8.1,因为 Postgesql 在设置数据库连接时不支持模式选择,我认为从表中查询不同模式的唯一方法是查询 'SET search_path = " my.schema"' 在进行所需的数据库调用之前。
我试过了;
StringBuilder sb = new StringBuilder();
sb.append("SET search_path TO my.schema");
entityManager_.createNativeQuery(sb.toString()).executeUpdate();
我有一个异常说'java.lang.IllegalStateException:你不能在这个查询上调用executeUpdate()。这是不正确的查询类型'
我使用 eclipselink 作为 PersistenceProvider 和 glassfish 作为应用程序管理器
有没有我可以完成的?
如果有更好的方法来实现这一点,我愿意接受任何建议
提前致谢
【问题讨论】:
-
进展如何?你还在吗?
标签: postgresql eclipselink glassfish-3 saas multi-tenant