我在WebSphere和DB2上使用OpenJPA 1.2.3。有没有办法构建和捆绑我的应用程序,允许相同的应用程序(EAR)具有基于环境(DEV、ACPT、PROD等)的不断变化的Schema名称。
我的PU设置为容器管理,如下所示:
<persistence>
<persistence-unit name="My_PU" transaction-type="JTA">
<jta-data-source>jdbc/DataSource</jta-data-source>
...
<properties>
<property name="openjpa.jdbc.Schema" value="MYSCHEMA"/>
<property name="openjpa.TransactionMode" value="managed"/>
<property name="openjpa.ConnectionFactoryMode" value="managed"/>
</properties>
</persistence-unit>
</persistence>我已经研究过将其放入ORM.xml中,但这仍然是模式的静态值,并且没有外部化该设置;而且,它似乎不起作用(我看到许多线程都在讨论这个问题)。我还研究过将此配置放入WebSphere数据源;这似乎也行不通。
--基思
发布于 2011-01-15 05:09:29
我不熟悉OpenJPA,但我猜openjpa.jdbc.Schema属性是可选的。数据源(即jdbc/DataSource上的数据源)将指定所使用的默认模式。
你有没有试过把房子留在外面?
发布于 2014-02-18 00:33:03
你可以使用maven。
1-在项目pom文件或maven设置中为每个构建方案定义配置文件。
<profiles>
<profile>
<id>DEV Profile</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<propertis>
<db-schema>DEVSCHEMA</db-schema>
</propertis>
</profile>
<profile>
<id>PROD Profile</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<propertis>
<db-schema>PRODSCHEMA</db-schema>
</propertis>
</profile>
</profiles>2-按如下方式更改您的persistence.xml:
<persistence>
<persistence-unit name="persistent-unit" transaction-type="JTA">
<jta-data-source>jdbc/DataSource</jta-data-source>
...
<properties>
<property name="openjpa.jdbc.Schema" value="${db-schema}"/>
<property name="openjpa.TransactionMode" value="managed"/>
<property name="openjpa.ConnectionFactoryMode" value="managed"/>
</properties>
</persistence-unit>
</persistence>3-在项目pom文件中放入以下行。
<build>
<resources>
<resource>
<directory>src/main/resources/META-INF</directory>
<filtering>true</filtering>
<targetPath>/META-INF</targetPath>
</resource>
</resources>
</build>发布于 2012-09-05 03:06:05
我只需创建单独的<persistence-unit>元素,然后动态选择要绑定的元素。
例如:
<persistence>
<persistence-unit name="DEV_PU" transaction-type="JTA">
<jta-data-source>jdbc/DataSource</jta-data-source>
...
<properties>
<property name="openjpa.jdbc.Schema" value="DEVSCHEMA"/>
<property name="openjpa.TransactionMode" value="managed"/>
<property name="openjpa.ConnectionFactoryMode" value="managed"/>
</properties>
</persistence-unit>
<persistence-unit name="PROD_PU" transaction-type="JTA">
<jta-data-source>jdbc/DataSource</jta-data-source>
...
<properties>
<property name="openjpa.jdbc.Schema" value="PRODSCHEMA"/>
<property name="openjpa.TransactionMode" value="managed"/>
<property name="openjpa.ConnectionFactoryMode" value="managed"/>
</properties>
</persistence-unit>
</persistence>https://stackoverflow.com/questions/4695827
复制相似问题