1

JPA(EclipseLink実装)とPostgreSQLをデータベースとして使用したJavaEEアプリケーションを開発したいと思います。

複数のデータベースとデータベースごとに1つのスキーマを使用するのではなく、1つのデータベースと複数のスキーマを使用することを選択しました。

だから、私のpersistence.xmlにはそのようなものがあります:

<persistence-unit name="00" transaction-type="JTA">

    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <jta-data-source>todo</jta-data-source>

    <class>...</class>
    <class>...</class>

    <properties>
        <property name="javax.persistence.target-database" value="PostgreSQL" />
        <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />
        <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/testdb;create=true" />
        <property name="javax.persistence.jdbc.user" value="user" />
        <property name="javax.persistence.jdbc.password" value="userpwd" />
    </properties>

</persistence-unit>

<persistence-unit name="01" transaction-type="JTA">

    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <jta-data-source>todo</jta-data-source>

    <class>...</class>
    <class>...</class>

    <properties>
        <property name="javax.persistence.target-database" value="PostgreSQL" />
        <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />
        <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/testdb;create=true" />
        <property name="javax.persistence.jdbc.user" value="user" />
        <property name="javax.persistence.jdbc.password" value="userpwd" />
    </properties>

</persistence-unit>

永続性ユニットを簡単に参照できます:

EntityManagerFactory emf = Persistence.createEntityManagerFactory("01");
EntityManager em = emf.createEntityManager();

しかし、スキーマに関する情報をpersistence.xmlに保存するにはどうすればよいですか?00スキーマまたはデータベース01にアクセスしたい。testdb

おそらくネイティブSQLを介してスキーマを直接変更できますが、スキーマを永続性ユニットにバインドする方法はありますか?

ありがとうございました

4

1 に答える 1

3

これと同じ質問がここで尋ねられ、答えられました: JPA-EclipseLink-デフォルトスキーマを変更する方法

orm.xmlファイルを使用して永続性ユニット全体のスキーマをオーバーライドするか、必要に応じて各テーブルアノテーションまたはxml要素内でスキーマを定義できます。

于 2012-11-20T21:27:20.423 に答える