【问题标题】:JPA, EclipseLink, PostgreSQL and schemasJPA、EclipseLink、PostgreSQL 和模式
【发布时间】:2012-11-08 17:24:31
【问题描述】:

我想开发一个使用 JPA(EclipseLink 实现)和 PostgreSQL 作为数据库的 Java EE 应用程序。

我选择拥有一个数据库和多个架构,而不是拥有多个数据库和每个数据库一个架构。

所以,在我的 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 中存储有关模式的信息?我想访问testdb 数据库中的架构0001

我可能可以直接通过本机 SQL 更改架构,但有没有办法将架构绑定到持久性单元?

谢谢

【问题讨论】:

标签: postgresql jpa schema eclipselink


【解决方案1】:

这里提出并回答了同样的问题: JPA - EclipseLink - How to change default schema

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

【讨论】:

  • 我创建了尽可能多的 postgreSQL 用户,我有架构并重新分配这些用户的默认架构,但您的解决方案肯定更好。谢谢!
猜你喜欢
  • 2013-01-29
  • 1970-01-01
  • 2013-01-01
  • 2011-03-13
  • 2013-10-12
  • 1970-01-01
  • 1970-01-01
  • 2016-08-22
  • 1970-01-01
相关资源
最近更新 更多