如何将 属性 从 .cfg (OSGI) 动态添加到 persistence.xml (Hibernate)
How can I dynamically add property from .cfg (OSGI) to persistence.xml (Hibernate)
以下情况:
在我的 test_property.cfg 文件中,我有 属性 行:
...
hibernate/persistence.schema=TEST_1
...
在 persistence.xml 我有设置行:
...
<property name="hibernate.default_schema" value="${hibernate/persistence.schema}" />
....
但是在构建项目之后,值 ${hibernate/persistence.schema} - 没有被替换
xml 我使用蓝图标签的文件 - 没问题,但我试图从测试 property.cfg
中找出如何使用 persistence.xml 的可替换值
Cfg 文件仅在 运行时 使用,而不在构建阶段使用。
-在构建阶段,您可以通过在包含 persistance.xml 的文件夹上启用资源搜索来随意解析 Maven 变量(here 是一些有用的文档)。
-在运行时,无法将 属性 从 cfg 文件绑定到 xml 其他文件。不要忘记包已经构建好,所以它是一个不可变的 jar。
我的解决方案:
-定义一个新 bean,它使用来自 cfg 的 属性。在这里,我们确信 cfg 在运行时的任何更改都会立即被检测到。
-在该 bean 中,读取 xml 文件并从已从 cfg.
读取的文件中覆盖想要的 属性
以下情况:
在我的 test_property.cfg 文件中,我有 属性 行:
...
hibernate/persistence.schema=TEST_1
...
在 persistence.xml 我有设置行:
...
<property name="hibernate.default_schema" value="${hibernate/persistence.schema}" />
....
但是在构建项目之后,值 ${hibernate/persistence.schema} - 没有被替换
xml 我使用蓝图标签的文件 - 没问题,但我试图从测试 property.cfg
中找出如何使用 persistence.xml 的可替换值Cfg 文件仅在 运行时 使用,而不在构建阶段使用。
-在构建阶段,您可以通过在包含 persistance.xml 的文件夹上启用资源搜索来随意解析 Maven 变量(here 是一些有用的文档)。
-在运行时,无法将 属性 从 cfg 文件绑定到 xml 其他文件。不要忘记包已经构建好,所以它是一个不可变的 jar。
我的解决方案:
-定义一个新 bean,它使用来自 cfg 的 属性。在这里,我们确信 cfg 在运行时的任何更改都会立即被检测到。
-在该 bean 中,读取 xml 文件并从已从 cfg.
读取的文件中覆盖想要的 属性