Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa 可以重写位于jar依赖项中的persistence.xml中的属性_Jpa_Glassfish_Eclipselink_Java Ee 6_Persistence.xml - Fatal编程技术网

Jpa 可以重写位于jar依赖项中的persistence.xml中的属性

Jpa 可以重写位于jar依赖项中的persistence.xml中的属性,jpa,glassfish,eclipselink,java-ee-6,persistence.xml,Jpa,Glassfish,Eclipselink,Java Ee 6,Persistence.xml,我有一个JavaEEWeb应用程序,它使用一个打包为jar依赖项的持久性单元(实体类、EJB存储库、persistence.xml) 为了让web应用程序运行一些验收测试,我需要重写打包的persistence.xml中的一个属性。具体来说,我需要通过设置以下属性来禁用默认的活动eclipselink <property name="eclipselink.cache.shared.default" value="false"/> 这是必要的,因为验收测试是直接用dbunit准

我有一个JavaEEWeb应用程序,它使用一个打包为jar依赖项的持久性单元(实体类、EJB存储库、persistence.xml)

为了让web应用程序运行一些验收测试,我需要重写打包的persistence.xml中的一个属性。具体来说,我需要通过设置以下属性来禁用默认的活动eclipselink

<property name="eclipselink.cache.shared.default" value="false"/>

这是必要的,因为验收测试是直接用dbunit准备/清理数据库的。这些修改将使eclipselink缓存处于过时状态(因为这些修改中不涉及持久性单元)

java ee(或特定于glassfish)中是否有方法重写位于jar中的persistence.xml中的属性(从运行测试时部署的web应用程序war文件开始)


可能还有其他方法,例如为测试部署构建特定于jar的依赖项,但是对于我来说,这条路线似乎很复杂,因为只覆盖我persistence.xml中的一个属性。

您可以将属性映射传递给persistence.createEntityManagerFactory()。要做到这一点,您必须自己管理持久性上下文(将无法注入它)

另一个选项是将该属性设置为Java系统属性(-D=),这不会覆盖persistence.xml中的现有属性,但如果该属性不在persistence.xml中,则使用work


另一种选择是在persistence.xml中放置SessionCustomizer或SessionTuner,以允许您自己的代码在运行时修改配置。

您只询问属性,对吗(至少您将仅涉及属性解决方案的答案标记为正确)?为了提高搜索能力,编辑标题是很好的,但是如果没有您的反馈,我不想这样做…@KarlRichter我已经编辑了标题/问题。如果仍有空间使其更精确,请随意编辑。谢谢