【发布时间】:2012-04-03 07:41:08
【问题描述】:
我是 JPA 和 JBoss 的新手,如果这是一个愚蠢的问题,请提前道歉。
我的应用程序使用 EclipseLink 在 JBoss 上运行,该应用程序根据 JPQL 字符串从各种数据库中检索实体。这很好用,除了一个数据库包含多个模式。我希望能够在运行时指定要使用的架构,并选择属于该架构的所有实体,而无需修改 JPQL 字符串。
为了使事情更复杂,我还想在同一个查询中加入跨模式。在这种情况下,JPQL 查询可能会发生变化,或者可以设置指定每个实体架构的参数。
经过一番搜索,我发现了这个:
JPA: How do I specify the table name corresponding to a class at runtime?
其中有一个使用 ASM 动态修改 Table 注释的解决方案。我曾尝试使用它来修改 Table 注释的架构属性,但对于我的生活,我无法让它工作;似乎 Eclipse Link 使用不同的类加载器来初始化我不知道如何访问的实体类,因此更改注释没有效果。
另一种解决方案是为每个架构设置多个 xml 配置文件。看起来不优雅;当我添加一个新实体时,我必须记住将它添加到每个架构的 xml 文件中。我也不知道如何跨多个架构进行此连接。
有没有办法解决这个问题?我是否遗漏了什么,或者这是否使 JPA 超出了它的预期?
【问题讨论】:
标签: jpa jboss eclipselink