【问题标题】:Set value of persistence.xml file with properties.config file使用 properties.config 文件设置 persistence.xml 文件的值
【发布时间】:2023-03-25 14:14:02
【问题描述】:

我想用我的 properties.config 中的值设置我的 persistence.xml 文件的值。

有没有办法做到这一点?像任何内置函数一样?

我认为像这样的功能

factory.setvaluesfrompersistence(config.getpropertie("name"));

我想这样做,因为我不想在persistence.xml 中设置我的个人值,所以如果我部署这个版本,那里没有可用的数据。

我使用 EclipseLink 作为 JPA Propvider

我的 properties.config:

db.url=
db.user=
db.psw= 

还有我的 persistens.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<persistence
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
    version="2.0" xmlns="http://java.sun.com/xml/ns/persistence">
    <persistence-unit name="test"
        transaction-type="RESOURCE_LOCAL">
        <class>my.test.test</class>
        <properties>
            <property name="javax.persistence.jdbc.driver"
                value="" />
            <property name="javax.persistence.jdbc.url"
                value="" />
            <property name="javax.persistence.jdbc.user" value="" />
            <property name="javax.persistence.jdbc.password" value="" />

        </properties>

    </persistence-unit>
</persistence>

我怎么称呼它:

        factory = Persistence.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
        final EntityManager em = factory.createEntityManager();

        final Query q = em.createQuery("select b from Beruf b");
        final List<Beruf> BerufeList = q.getResultList();
        for (final Beruf beruf : BerufeList) {
            System.out.println(beruf);
        }

        em.close();

【问题讨论】:

  • 您是在使用像 Spring 这样的框架,还是在应用服务器中部署您的应用程序?
  • 我在 Eclipse 中使用 Maven。
  • 那么你是如何引导 EclipseLink 的呢?你能参与这个过程,尤其是实体管理器工厂的创建吗?如果是这样,您是否尝试将属性传递给构造函数/工厂方法?除此之外,您是否尝试过直接从命令行传递javax.persistence.jdbc.user
  • 我不确定你想要什么:/。我在 Eclipse 中通过 Maven 添加了 EclipseLink。我想要的只是将我的代码中的用户和密码传递给实体管理器工厂。就像我创建一个变量 "db.user" = "test";然后我只想将它传递给像 factory.createEnityManager(db.user) 这样的函数或这样的函数(最好的情况是内置)。它应该像我在persistence.xml中写它一样“设置”这些值。如果我在我的 persiscene.xml 中硬编码它,它就像一个魅力,我从我的数据库中获取值。
  • EclipseLink 不会“自动”启动,如果您将它作为依赖项(至少据我所知),因此需要一些代码来实际告诉 EclipseLink 启动、创建工厂等.你代码中的factory是从哪里来的?

标签: java eclipse persistence persistence.xml


【解决方案1】:

解决方案

是创建一个 Map,您可以在其中从 persistence.xml 文件中设置键并为其赋予新值。

【讨论】:

    猜你喜欢
    • 2021-01-23
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    • 2015-05-17
    • 2021-05-09
    • 1970-01-01
    • 2023-04-08
    • 2012-02-05
    相关资源
    最近更新 更多