パスワードを忘れた? アカウント作成
508015 journal

shimashimaの日記: [Java][Hibernate]OneToMany で双方向参照の場合@IndexColumnが有効にならない

日記 by shimashima

desumasuさんの日記で取り上げられている話題。
最近仕事でちょうどはまったのでメモとして書き置く。

Hibernate のJIRAでも上げられているが、こっちはどうもドキュメントの記述についての指摘のみのようで、本質的な解決が行われないままcloseされてしまっている。

回避策はdesumasuさんの日記でもいいだのが、私の場合は以下の用にした。
1.@OneToManyが書いてある(Listがある)Entityに@PrePersistなど更新・挿入系操作時のフックメソッドを作成。
2.Listに含まれる(Many側Entity)にIndex用field(もしくはProperty)を作成する。
3.「1.」で作成したメソッドにてList内のインスタンスに対してIndex番号を一つずつふっていく。
4.@OneToManyののfiled(もしくはProperty)に@OrderBy("[2.で作成したfiled] ASC")を追加する。

利用する側から意識せずにインデックス番号をふりソートして取得する場合はこれくらいしかない。アノテーションを利用していなければこんな罠にははまらないのだけれど、やはりアノテーションは便利だからね。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

日々是ハック也 -- あるハードコアバイナリアン

読み込み中...