将persistence.xml改为使用postgresql而不是mysql

6g8kf2rb  于 2021-06-23  发布在  Mysql
关注(0)|答案(1)|浏览(263)

我是新来的,我用这个网站寻找答案很久了,但这是我第一次想问一个问题。我想使用heroku部署我的spring(而不是springboot)应用程序。我找到了一本很好的教程(https://github.com/abdallah-abdelazim/yt-heroku-demo/blob/master/readme.txt),但它只展示了如何使用spring引导应用程序实现这一点。他的application.properties文件如下所示:

spring.datasource.url=${JDBC_DATABASE_URL}
  spring.datasource.username=${JDBC_DATABASE_USERNAME}
  spring.datasource.password=${JDBC_DATABASE_PASSWORD}
  spring.jpa.show-sql=false
  spring.jpa.generate-ddl=true
  spring.jpa.hibernate.ddl-auto=create

我认为我应该做的是相应地编辑persistence.xml。我做了这样的事,但没有成功:

<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence
             http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
             version="2.1">
    <persistence-unit name="passwordsPersistenceUnit">
        <properties>
            <property name="javax.persistence.jdbc.url"
                      value="${JDBC_DATABASE_URL}"/>
            <property name="javax.persistence.jdbc.user" value="${JDBC_DATABASE_USERNAME}"/>
            <property name="javax.persistence.jdbc.password" value="${JDBC_DATABASE_PASSWORD}"/>
            <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver"/>

            <property name="hibernate.enable_lazy_load_no_trans" value="true"/>
                <property name="hibernate.show_sql" value="false" />
            <property name="hibernate.hbm2ddl.auto" value="update" />
        </properties>
    </persistence-unit>
</persistence>

我怎样才能改变它使它工作?事先非常感谢。

ffx8fchx

ffx8fchx1#

这个 persistence.xml 不支持你发现的环境变量。你需要用代码来完成,比如:

Map<String, String> env = System.getenv();
Map<String, Object> configOverrides = new HashMap<String, Object>();
for (String envName : env.keySet()) {
  if (envName.contains("JDBC_DATABASE_URL")) {
    configOverrides.put("javax.persistence.jdbc.url", env.get(envName));
  }
}
entityManagerFactory = Persistence.createEntityManagerFactory("prod", configOverrides);

下面是一个相关的示例应用程序。heroku文档中也有许多示例,包括springxmlconfig。

相关问题