OSGI + Aries JPA + Hibernate Dialect

时间:2016-12-31 09:17:20

标签: hibernate jpa osgi aries

我正在尝试进行一些pax-exam-karaf测试(hibernate 5.2.6,Pax-exam 4.9.2,ServiceMix 7.0.0M3),但我遇到了hibernate方言的问题。在生产中我们使用PostgreSQL但是对于集成测试我想使用h2数据库。 我们的持久性xml包含

<property name="hibernate.dialect" value="${hibernate.dialect.value}" 

在maven父POM中我们定义了

<hibernate.dialect.value>org.hibernate.dialect.PostgreSQLDialect</hibernate.dialect.value>

我已阅读此讨论http://karaf.922171.n3.nabble.com/Dynamic-parameters-in-persistence-xml-td4043602.html并在Pax-Exam配置代码中尝试了它:

for (String persistenceUnit : persistenceUnits) {
      puOptions.add(KarafDistributionOption.editConfigurationFilePut("etc/org.apache.aries.jpa." + persistenceUnit + ".cfg",
              "hibernate.dialect", "org.hibernate.dialect.H2Dialect"));
}

所以我可以在karaf / etc目录中看到这些配置文件,但是所有持久性bundle仍然有一个在persistence.xml中指定的hibernate.dialect。我也尝试将其中一个文件复制到servicemix发行版,但结果相同,hibernate方言仍然是一样的。

这个解决方案与aries jpa持久性配置文件有什么问题吗?或者还有其他方法如何更改persistence.xml的方言?

我知道我可以从persistence.xml中删除hibernate方言,但是由于其他原因我们无法做到这一点。我还发现我可以将自己的解析器用于方言(http://blog.exxeta.com/2016/03/23/dynamically-resolve-hibernate-database-dialect/),但如果可能的话,我更喜欢配置方式。

0 个答案:

没有答案