我使用时有以下情况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。