我将 Spring+Hibernate+Tomcat+Oracle 应用程序调整为分布式形式,需要在 JPA 注释中自定义模式名称,类似于 Spring EL:
@Entity
@Table(name = "LOSS", schema="${app.dataSchema}")
public class Loss { ... }
我在上面的示例中寻找像 ${app.dataSchema}
这样的注释中的占位符支持。或者任何其他可能性...
想法 - 拥有无需重新编译即可部署到另一个站点的应用程序,其中保留了数据库关系/层次结构,但更改了一些名称并且可以通过系统属性、JNDI 或部署上下文描述符进行配置。
我看到的一个解决方案是在选定的模式中创建 View
- 在实际模式/表/列和应用程序硬编码名称之间提供桥梁。
但我希望 JPA/Hibernate/Spring 有一些用于此类配置的工具...
最佳答案
使用orm.xml
。这就是 JPA 提供它的目的。如果您需要更改部署,将部署信息放在注释中不是一个好主意,因此只需使用不同的 orm.xml
文件就可以轻松实现。请注意,您也可以在 orm.xml
的 persistence-unit-defaults 部分设置默认架构
关于spring - JPA,外部化列、表或模式名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25978242/