2011-09-15 6 views
1

Parentクラスが多く、Childrenがある場合、Hibernateは自動的にその子の順序を管理できますか?ドキュメントを読んで検索することから、@OrderColumn注釈でこれが有効になっているようですが、それを行う方法の例は見つかりませんでした。私が見つけたもっとも近いものはJPA 2.0 @OrderColumn annotation in Hibernate 3.5です。これはちょうど私がやりたいことと同じように見えるので少し落胆しています。私は、彼らがどうなるかわからないので、ここで Hibernateは子コレクションの順序を自動的に管理できますか?

は、私が何をしようとしているのラフスケッチ、マイナスの注釈です:

class Parent { 
    // I probably need some sort of @OrderColumn annotation here, right? 
    private List<Child> children = new ArrayList<Child>; 
} 

class Child { 
    private Parent parent; 
    private int order; 
} 

class SomeBusinessLogic { 
    public static void createFamily() { 
    Parent dad = new Parent("Tom"); 
    List<Children> children = dad.getChildren(); 
    children.add(new Child("Alice"); 
    children.add(new Child("Bob"); 
    children.add(new Child("Carl"); 
    session.save(dad); 
    } 

    public static void addChild(Parent parent) { // assuming Tom is passed in 
    List<Children> children = parent.getChildren(); 
    children.add(1, new Child("Zelda"); 
    session.save(parent); 
    // now, the order should be: Alice, Zelda, Bob, Carl 
    } 
} 

誰かが私にこれを行うのに十分な詳細を与えることができる場合おもちゃの例の仕事(またはそれが動作しないことを教えてください)、私は最も感謝するだろう。

+1

これは[2902553](http://stackoverflow.com/q/2902553/851811)の複製のようです。 '@ OrderBy'を見てください。 –

+0

Xavi、私は' Parent'を保存するときに注文列の自動更新にもっと興味があります。 '@ OrderColumn'アノテーションを' Parent'に追加すると、データベースから 'Parent'を取得したときに子どもを正しく注文しますが、並べ替えを永続化する方法を理解することはできません。 '@ OrderBy'は問題の側面を処理するだけなので、私にとっては十分ではありません。 –

+0

コレクションを指定した順序で挿入しますか? – ssedano

答えて

1

子供をその順序で格納するには、@IndexedColumn注釈でマップする必要があります。これにより、子オブジェクト表に索引付き列が作成されます。

関連する問題