Jpa 可以重写位于jar依赖项中的persistence.xml中的属性
我有一个JavaEEWeb应用程序,它使用一个打包为jar依赖项的持久性单元(实体类、EJB存储库、persistence.xml) 为了让web应用程序运行一些验收测试,我需要重写打包的persistence.xml中的一个属性。具体来说,我需要通过设置以下属性来禁用默认的活动eclipselinkJpa 可以重写位于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准
<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我已经编辑了标题/问题。如果仍有空间使其更精确,请随意编辑。谢谢