Jpa 以编程方式使所有关系CascadeType.MERGE

Jpa 以编程方式使所有关系CascadeType.MERGE,jpa,eclipselink,Jpa,Eclipselink,我们已经在应用程序中严格定义了哪些关系是CascadeType.MERGE。这会影响到我们的版本检查(乐观锁定)。因此,我们的级联类型定义有时有合并,有时没有。这对于我们的OLTP应用程序来说是非常好的。但是,我们还需要加载关系可能不同的数据(可以脱机批处理)。我想做的是告诉jpa(或eclipselink)在批处理加载期间将每个关系作为CascadeType.MERGE处理。换句话说,我希望eclipselink在批处理加载期间忽略我们的注释。这可能吗?JPA标准定义了两种配置实体的方法—注释

我们已经在应用程序中严格定义了哪些关系是CascadeType.MERGE。这会影响到我们的版本检查(乐观锁定)。因此,我们的级联类型定义有时有合并,有时没有。这对于我们的OLTP应用程序来说是非常好的。但是,我们还需要加载关系可能不同的数据(可以脱机批处理)。我想做的是告诉jpa(或eclipselink)在批处理加载期间将每个关系作为CascadeType.MERGE处理。换句话说,我希望eclipselink在批处理加载期间忽略我们的注释。这可能吗?

JPA标准定义了两种配置实体的方法—注释(每个人都知道)和XML文件。XML中的定义应覆盖注释定义。这意味着您有两种选择:

  • 手工编写XML文件
  • 编写一个小程序,读取实体并(通过反射)生成XML文件

您可以找到orm.xml文件的示例

如果我没有得到任何其他答案,我将接受这个。“编写一个小程序来读取实体并(通过反射)生成XML文件。”-我希望我不必做那么难看的事情。我越是使用JPA,我就越意识到它是多么的缺乏!你总是可以用手来做。。。这是灵活性的代价。如果我们可以像ruby一样使用ActiveRecord,那么我们在配置对象和数据库之间的关系时就不会那么灵活了(你可以从两个方面来论证它是好是坏),我不同意这是灵活性的代价。我相信这是一个可能的功能,只是还没有实现。它可能有JPA提供商的编程配置,但我不知道有任何(从未需要过)。所有主要的提供者都是开源的,所以你可以自己添加一个。