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")を追加する。
利用する側から意識せずにインデックス番号をふりソートして取得する場合はこれくらいしかない。アノテーションを利用していなければこんな罠にははまらないのだけれど、やはりアノテーションは便利だからね。
[Java][Hibernate]OneToMany で双方向参照の場合@IndexColumnが有効にならない More ログイン