【发布时间】: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