1

我们在 persistence.xml 中设置了以下属性:

<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>

如果我理解正确,这就是告诉 OpenJPA MappingTool 它应该在数据库中生成适当的表的原因,如果相应的托管实体找不到这些表。

我没有弄清楚是否有任何方法可以指定MappingTool 一旦获得对 EntityManager 的引用后仍然存在的列的顺序?

MappingDefaults 没有提供这样的属性(至少我找不到它),实际上唯一的方法是重新实现 OpenJPA API 的一部分以支持这一点。

该选项目前对我们来说不可行,我会询问有关如何指定列排序的任何想法或指南 - 如果有的话。

我们的环境由以下堆栈组成:

  • OpenJPA 2.0.1
  • JDK 1.6.23
  • 春天 3.0.5
  • Maven 2.2.1
  • IBM DB2 9.7 Express-C

我也有点惊讶,谷歌上只有少数这样的问题。

4

2 回答 2

0

我发现,即使您再次为同一架构执行映射工具,也无法保证列的顺序。我也在使用 IBM DB2,在这里我必须确保在每个实例中创建的表都完全相同。因此,我使用映射工具生成了一次 DDL 脚本,并且仅在我的数据模型发生更改时才更新它。

于 2014-10-10T11:52:45.773 回答
0

如果特定表的列顺序对您的应用程序很重要,请不要使用 SynchronizeMappings。

于 2011-03-30T14:40:02.097 回答