JPA、EclipseLink、PostgreSQL和模式

JPA、EclipseLink、PostgreSQL和模式,postgresql,jpa,schema,eclipselink,Postgresql,Jpa,Schema,Eclipselink,我想用JPA(EclipseLink实现)和PostgreSQL作为数据库开发一个JavaEE应用程序 我选择了一个数据库和多个模式,而不是多个数据库和每个数据库一个模式 因此,在我的persistence.xml中,我有如下内容: <persistence-unit name="00" transaction-type="JTA"> <provider>org.eclipse.persistence.jpa.PersistenceProvider</pr

我想用JPA(EclipseLink实现)和PostgreSQL作为数据库开发一个JavaEE应用程序

我选择了一个数据库和多个模式,而不是多个数据库和每个数据库一个模式

因此,在我的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>
但是如何在persistence.xml中存储有关模式的信息呢?我想访问
testdb
数据库中的schema
00
01

我可能可以通过本机SQL直接更改模式,但有没有办法将模式绑定到持久化单元


谢谢你

同样的问题在这里被问到和回答:


您可以使用orm.xml文件覆盖整个持久化单元的架构,或者根据需要在每个表注释或xml元素中定义它。

我创建了尽可能多的具有架构的postgreSQL用户,并重新分配了这些用户的默认架构,但您的解决方案确实更好。非常感谢。
EntityManagerFactory emf = Persistence.createEntityManagerFactory("01");
EntityManager em = emf.createEntityManager();