我在使用 JPA/Spring 时遇到了一个特定问题:
如何动态地将模式分配给实体?
我们有属于模式 AD 的 TABLE1 和属于 BD 的 TABLE2。
@Entity
@Table(name = "TABLE1", schema="S1D")
...
@Entity
@Table(name = "TABLE2", schema="S2D")
...
模式可能不会在注释属性中硬编码,因为它取决于环境(Dev/Acc/Prd)。 (验收时的模式为 S1A 和 S2A)
我怎样才能实现这个目标?是否可以指定某种占位符,如下所示:
@Entity
@Table(name = "TABLE1", schema="${schema1}")
...
@Entity
@Table(name = "TABLE2", schema="${schema2}")
...
以便根据环境中驻留的属性文件替换模式?
Cheers
我遇到了同样的问题,我用 persistence.xml 解决了这个问题,在其中我引用了我声明的 db shema 中所需的 orm.xml 文件
<persistence
xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0" >
<persistence-unit name="schemaOne">
. . .
<mapping-file>ormOne.xml</mapping-file>
. . .
</persistence-unit>
<persistence-unit name="schemaTwo">
. . .
<mapping-file>ormTwo.xml</mapping-file>
. . .
</persistence-unit>
</persistence>
现在您可以为您的特殊模式创建一个 EntityManagerFactory
EntityManagerFactory emf = Persistence.createEntityManagerFactory("schemaOne");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)