2

我使用时有以下情况OpenJPA

这 3 个实体:SelectQueryElement, SingleSelectQueryElement,CompositeQueryElement实现了思想SINGLE_TABLE继承。

我也有ColumnClass拥有顶级CompositeQueryElement. 这些类中的每一个都有EAGER加载和PERSIST/MERGE级联类型。

类图

现在,如果我想模仿这样的结构:

ColumnClass
|   CompositeSelectQueryElement // top-level query element
|   |   SingleSelectQueryElement 
|   |   CompositeSelectQueryElement 
|   |   |   SingleSelectQueryElement 
|   |   SingleSelectQueryElement
|   |   CompositeSelectQueryElement
|   |   |   SingleSelectQueryElement

...我尝试合并ColumnClass对象,我希望插入顺序是“预购”。但我得到的甚至没有接近那个。

我期望以下插入顺序:

   ColumnClass
1   |   CompositeSelectQueryElement // TOP-LEVEL
2   |   |   SingleSelectQueryElement
3   |   |   CompositeSelectQueryElement
4   |   |   |   SingleSelectQueryElement
5   |   |   SingleSelectQueryElement
6   |   |   CompositeSelectQueryElement
7   |   |   |   SingleSelectQueryElement

或者至少:

   ColumnClass
1   |   CompositeSelectQueryElement // TOP-LEVEL
2   |   |   SingleSelectQueryElement
3   |   |   CompositeSelectQueryElement
6   |   |   |   SingleSelectQueryElement
4   |   |   SingleSelectQueryElement
5   |   |   CompositeSelectQueryElement
7   |   |   |   SingleSelectQueryElement

我得到的是这样的:(注意先到所有Composites,然后再到所有Singles)

   ColumnClass
1   |   CompositeSelectQueryElement // TOP-LEVEL
4   |   |   SingleSelectQueryElement
2   |   |   CompositeSelectQueryElement
5   |   |   |   SingleSelectQueryElement
6   |   |   SingleSelectQueryElement
3   |   |   CompositeSelectQueryElement
7   |   |   |   SingleSelectQueryElement

s 的顺序Single也不一致。有时它不是这样的,而是随机的。

问题:有没有办法解决这个排序问题并“建议”OpenJPA我想要实现的目标。

我使用 OpenJPA v2.2。

4

1 回答 1

1

OpenJPA 邮件列表中的这条消息似乎表明您的解决方案是包含<property name="openjpa.jdbc.UpdateManager" value="operation-order">在您的配置中。希望有帮助。

于 2012-12-02T00:51:35.617 回答