使用多个数据库架构的JPA

我在使用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}")

...

以便根据驻留在环境中的属性文件替换架构?

回答:

我有一个相同的问题,我用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");

以上是 使用多个数据库架构的JPA 的全部内容, 来源链接: utcz.com/qa/416079.html

回到顶部