Hibernateのクラスのサブ値のリストがあります。私の最初の実装はSetでしたが、これは本質的に「データベースの順序」(ほぼ挿入順序であるクラスター化インデックスに基づく可能性が高い)の値を返します。
リストへの切り替えを検討したので、を追加しましたが、返されるJavaリストにnullが含まれているという問題がすぐに発生しました。私のデータの一部はHibernateによって書き込まれますが、一部はSQLスクリプトによっても書き込まれます。
私が欲しいのは、リスト内の位置に関連付けられていないsortOrder属性です。これにより、重複している場合、つまり{1、3、3、10}は、適切に{0、1、2、3にマップされます。ここで、2番目と3番目のアイテムの順序はデータベースの順序にフォールバックします。ヌルも問題ありません。リストの前に置くか後ろに置くかは関係ありません(動作が一貫している限り)。
Bagを見ましたが、sortOrder属性を定義に取り込む方法がわからず、重複が許可されるのではないかと少し心配していました。Setを使用したときと同じ制約を設定したいと思います(親子のタプルは常に一意であると思います)。
提案?Bagを微調整して、インデックス付きのリストではなく、sortOrder付きのリストとして機能させることはできますか?SQLによって直接入力されたデータによってコードがハングアップするのを防ぐために、他に何をする必要がありますか?