2

を使用すると、次のような状況になりますOpenJPA

これらの 3 つのエンティティ: SelectQueryElementSingleSelectQueryElementCompositeQueryElementは、思想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

しかし、私が得たのはこれでした:(最初にすべてCompositeのsが来て、それらのすべての後にSingle来ることに注意してください

   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 に答える